将嵌套json数据转换为对象
一、json数据格式
(1)(deviceStatusList为嵌套的格式) 需要两个实体对象存储数据,User存储code和deviceStatusList, Data存储 deviceStatusList内部三个属性。
{
“code”: 0,
“deviceStatusList”: [{
" datasetId" : “temperature”,
“value” : “31”,
“timestamp”: 1535697526464
},
{
" datasetId" : “batteryLevel”,
“value” : “90”,
“timestamp”: 1535697526464
}]
}
二、嵌套解析实体
定义实体类:注意要有构造方法
1.user
public class User {
private Integer code;
private List<Data> deviceStatusList;
public User() {
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public List<Data> getDeviceStatusList() {
return deviceStatusList;
}
public void setDeviceStatusList(List<Data> deviceStatusList) {
this.deviceStatusList = deviceStatusList;
}
@Override
public String toString() {
return "User{" +
"code=" + code +
", deviceStatusList='" + deviceStatusList + '\'' +
'}';
}
}
2.Data
public class Data {
private String datasetId;
private String value;
private String timestamp;
public Data() {
}
public String getDatasetId() {
return datasetId;
}
public void setDatasetId(String datasetId) {
this.datasetId = datasetId;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
@Override
public String toString() {
return "Data{" +
"datasetId='" + datasetId + '\'' +
", value='" + value + '\'' +
", timestamp='" + timestamp + '\'' +
'}';
}
}
三、嵌套解析数据(将嵌套的json数据 jsonObject 转换为 User对象)
//解析嵌套的json数据
Map<String,Class> map = new HashMap<>();
//获取json对象
String s= new String(response.getBody());
JSONObject jsonObject = JSONObject.fromObject(s);
//指定json数据中deviceStatusList的数据类型
map.put("deviceStatusList", Data.class);
User user=(User)JSONObject.toBean(jsonObject, User.class,map);
System.out.println("用户信息为:"+user);
List<Data> dataList = user.getDeviceStatusList();
for (Data data:dataList
) {
System.out.println("获得的数据信息为:"+data);
}