JSON转对象 对象转JSON JSONArray

1.对象转JSON,属性为空的不显示

GeofenceCreateDTO geofenceDTO = new GeofenceCreateDTO();
        ObjectMapper mapper = new ObjectMapper();
        mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
        String jsonstr=mapper.writeValueAsString(geofenceDTO);
Bean对象添加注解:

@JsonInclude(JsonInclude.Include.NON_EMPTY)
//Include.Include.ALWAYS 默认 
//Include.NON_DEFAULT 属性为默认值不序列化 
//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化 
//Include.NON_NULL 属性为NULL 不序列化 

2.JSON转对象

首先根据JSON生成对应的对象格式

String jso="{\"data\":{\"gid\":\"40affa1e-0e09-4d44-82bc-82e0fce1002b\",\"id\":\"0\",\"message\":\"成功\",\"status\":\"0\"},\"errcode\":0,\"errdetail\":null,\"errmsg\":\"OK\"}";
        JSONObject jsonObject=JSONObject.fromObject(jso);
        ResultMsgDTO stu=(ResultMsgDTO)JSONObject.toBean(jsonObject, ResultMsgDTO.class);
        System.out.println(stu);


3.JSON 转对象包含数组

JSON格式如下:

{
"data": {
"page_no": 1,
"page_size": 20,
"rs_list": [
      {
"adcode": "0",
"alert_condition": "",
"center": "116.48231,39.990177",
"create_time": "2017-01-16 17:49:51",
"enable": "false",
"fixed_date": "",
"gid": "7a6b40c6-7ba6-47e0-9b30-00354797c623",
"id": "0",
"key": "用户key",
"name": "fencetest",
"points": "",
"radius": 3000,
"repeat": "Mon",
"time": "11:30,13:15;14:00,17:45",
"valid_time": "2017-01-22"
}
],
"total_record": 1
},
"errcode": 0,
"errmsg": "OK"
}

根据JSON编写对应的实体

/**最外层*/
@Data
public class ResultMsgQueryDTO implements Serializable {
    private ResultDataQueryDTO data;
    private String errcode;
    private String errmsg;
    private String errdetail;

}
/**data数据层*/
@Data
public class ResultDataQueryDTO implements Serializable {
    private Integer page_no;
    private Integer page_size;
    private List<GeofenceDTO> rs_list;
    private Integer total_record;
}

/**List集合对象*/
@Data
public class GeofenceDTO implements Serializable {
    private String adcode;
    private String alert_condition;
    private String center;
    private String create_time;
    private Boolean enable;
    private String fixed_date;
    private String gid;
    private String id;
    private String key;
    private String name;
    private String points;
    private BigDecimal radius;
    private String repeat;
    private String time;
    private String valid_time;

}

解析JSON到对象如下

    public static void main(String[] args) throws Exception {
        String jso = "json";
        JSONObject jsonObject = JSONObject.fromObject(jso);
        ResultMsgQueryDTO resultMsgQueryDTO = (ResultMsgQueryDTO) JSONObject.toBean(jsonObject, ResultMsgQueryDTO.class);

        JSONObject data = jsonObject.getJSONObject("data");
        ResultDataQueryDTO resultDataQueryDTO = (ResultDataQueryDTO) JSONObject.toBean(data, ResultDataQueryDTO.class);
        JSONArray jsonArray = data.getJSONArray("rs_list");
        //参数1为要转换的JSONArray数据,参数2为要转换的目标数据,即List盛装的数据
        List<GeofenceDTO> list = JSONArray.toList(jsonArray, new GeofenceDTO(), new JsonConfig());
        resultDataQueryDTO.setRs_list(list);
        resultMsgQueryDTO.setData(resultDataQueryDTO);

        System.out.println(resultMsgQueryDTO);


    }

4.JSONArray套JSONArray,如何解析

String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]" ;  // 一个未转化的字符串

JSONArray json = JSONArray.fromObject(str ); // 首先把字符串转成 JSONArray  对象

if(json.size()>0){
  for(int i=0;i<json.size();i++){
    JSONObject job = json.getJSONObject(i);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象
    System.out.println(job.get("name")+"=") ;  // 得到 每个对象中的属性值
  }
}






猜你喜欢

转载自blog.csdn.net/lanqibaoer/article/details/78730289