Java JSON接收案例实现
这里提供一个完整的Java JSON接收案例,包括多种实现方式:

使用Maven依赖配置
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
<!-- Gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
<!-- Fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.35</version>
</dependency>
定义数据模型
// User.java
public class User {
private int id;
private String name;
private int age;
private String email;
private Address address;
// 无参构造器(必需)
public User() {}
// getter和setter方法
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public Address getAddress() { return address; }
public void setAddress(Address address) { this.address = address; }
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", email='" + email + '\'' +
", address=" + address +
'}';
}
}
// Address.java
public class Address {
private String street;
private String city;
private String zipCode;
public Address() {}
public String getStreet() { return street; }
public void setStreet(String street) { this.street = street; }
public String getCity() { return city; }
public void setCity(String city) { this.city = city; }
public String getZipCode() { return zipCode; }
public void setZipCode(String zipCode) { this.zipCode = zipCode; }
@Override
public String toString() {
return "Address{" +
"street='" + street + '\'' +
", city='" + city + '\'' +
", zipCode='" + zipCode + '\'' +
'}';
}
}
JSON字符串示例
{
"id": 1,
"name": "张三",
"age": 25,
"email": "zhangsan@example.com",
"address": {
"street": "北京市朝阳区",
"city": "北京",
"zipCode": "100000"
}
}
使用Jackson接收JSON
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class JacksonExample {
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"id\":1,\"name\":\"张三\",\"age\":25,\"email\":\"zhangsan@example.com\",\"address\":{\"street\":\"北京市朝阳区\",\"city\":\"北京\",\"zipCode\":\"100000\"}}";
try {
// 单个对象
User user = mapper.readValue(jsonString, User.class);
System.out.println("用户信息:" + user);
// JSON数组转为List
String jsonArray = "[{\"id\":1,\"name\":\"张三\"},{\"id\":2,\"name\":\"李四\"}]";
List<User> userList = mapper.readValue(jsonArray,
new TypeReference<List<User>>() {});
System.out.println("用户列表:" + userList);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用Gson接收JSON
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.List;
public class GsonExample {
public static void main(String[] args) {
Gson gson = new Gson();
String jsonString = "{\"id\":1,\"name\":\"张三\",\"age\":25,\"email\":\"zhangsan@example.com\",\"address\":{\"street\":\"北京市朝阳区\",\"city\":\"北京\",\"zipCode\":\"100000\"}}";
// 单个对象
User user = gson.fromJson(jsonString, User.class);
System.out.println("用户信息:" + user);
// JSON数组转为List
String jsonArray = "[{\"id\":1,\"name\":\"张三\"},{\"id\":2,\"name\":\"李四\"}]";
List<User> userList = gson.fromJson(jsonArray,
new TypeToken<List<User>>(){}.getType());
System.out.println("用户列表:" + userList);
}
}
使用Fastjson接收JSON
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import java.util.List;
public class FastjsonExample {
public static void main(String[] args) {
String jsonString = "{\"id\":1,\"name\":\"张三\",\"age\":25,\"email\":\"zhangsan@example.com\",\"address\":{\"street\":\"北京市朝阳区\",\"city\":\"北京\",\"zipCode\":\"100000\"}}";
// 单个对象
User user = JSON.parseObject(jsonString, User.class);
System.out.println("用户信息:" + user);
// JSON数组转为List
String jsonArray = "[{\"id\":1,\"name\":\"张三\"},{\"id\":2,\"name\":\"李四\"}]";
List<User> userList = JSON.parseObject(jsonArray,
new TypeReference<List<User>>(){}.getType());
System.out.println("用户列表:" + userList);
// 或者使用parseArray
List<User> userList2 = JSON.parseArray(jsonArray, User.class);
System.out.println("用户列表2:" + userList2);
}
}
Spring Boot Controller接收JSON
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api")
public class UserController {
// 接收单个JSON对象
@PostMapping("/user")
public String addUser(@RequestBody User user) {
System.out.println("接收到的用户:" + user);
return "用户添加成功:" + user.getName();
}
// 接收JSON数组
@PostMapping("/users")
public String addUsers(@RequestBody List<User> users) {
System.out.println("接收到的用户列表:" + users);
return "添加了 " + users.size() + " 个用户";
}
// 接收复杂JSON(包含嵌套对象)
@PostMapping("/user/detail")
public String addUserDetail(@RequestBody User user) {
System.out.println("用户详细信息:" + user);
System.out.println("地址:" + user.getAddress());
return "用户详情保存成功";
}
}
发送JSON的测试代码
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class JsonClient {
public static void main(String[] args) throws Exception {
// 发送POST请求
URL url = new URL("http://localhost:8080/api/user");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json; utf-8");
conn.setDoOutput(true);
String jsonString = "{\"id\":1,\"name\":\"张三\",\"age\":25,\"email\":\"zhangsan@example.com\"}";
try(OutputStream os = conn.getOutputStream()) {
byte[] input = jsonString.getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}
// 获取响应
int responseCode = conn.getResponseCode();
System.out.println("响应代码:" + responseCode);
conn.disconnect();
}
}
注意事项
- JSON格式校验:确保JSON格式正确,字段名与Java属性名匹配
- 构造器:Java类必须有默认无参构造器
- getter/setter:必须提供public的getter和setter方法
- 日期处理:日期类型需要添加注解或配置格式
- 异常处理:JSON解析可能抛出异常,需要捕获处理
- 性能考虑:
- Jackson性能最好
- Fastjson速度较快
- Gson稳定性高
选择哪种JSON库取决于你的具体需求,Spring Boot默认使用Jackson,如果没有特殊需求推荐使用Jackson。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播