思路:利用JSON.parseObject(String,Bean.class) 反序列化成对象
测试类
@Test
public void test() {
String jsonTest = "{\"id\": 15, \"name\":\"大猪\", \"object\": {\"age\": 11, \"height\": 177}}";
Bean bean = JSON.parseObject(jsonTest, Bean.class);
System.out.println(bean);
Integer id = bean.getId();
Integer age = bean.getPersonalInfo().getAge();
Integer height = bean.getPersonalInfo().getHeight();
System.out.println("id: " + id);
System.out.println("age: " + age);
System.out.println("height: " + height);
}
**实体类 **
@Data
static class Bean {
/**
* id
*/
private Integer id;
/**
* 个人信息
*/
@JSONField(name = "object")
private PersonalInfoDTO personalInfo;
}
@Data
static class PersonalInfoDTO {
/**
* 身高
*/
private Integer height;
/**
* 年龄
*/
private Integer age;
}
注意:
- 父JSON中还有一个子JSON “object”,想要获取
"object"中的数据建议创建两个实体类,一个用于定义父JSON数据,另一个定义子JSON数据,如果子JSON中还有子JSON则再创建一个 - 要注意实体中的字段名称要与JSON中的保持一致
- 如JSON中有无意义的字段名(例如上面的object)可用 @JSONField(name = “object”) 注解将其重新定义
- 子JSON的实体类需要在父JSON中进行定义