将嵌套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 deviceStatusList;
    public User() {
    }
    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }
    public List getDeviceStatusList() {
        return deviceStatusList;
    }
    public void setDeviceStatusList(List 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 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 dataList = user.getDeviceStatusList();
        for (Data data:dataList
             ) {
            System.out.println("获得的数据信息为:"+data);
        }

你可能感兴趣的:(将嵌套json数据转换为对象)