类似下面的json格式的字符串,我们可以转为jsonObject对象。
String s="{\"recordsTotal\":\"0\",\"draw\":0,\"recordsFiltered\":1}";
JSONObject jsonObject=JSON.parseObject(s); JSONObject jsonObject1=JSONObject.parseObject(s); 都可以。
类似下面的json格式的字符串,我们可以转为jsonArray数组对象。 String s="[{\"recordsTotal\":\"0\",\"draw\":0,\"recordsFiltered\":1}]";
JSONArray jsonArray=JSON.parseArray(s); JSONArray jsonArray1=JSONArray.parseArray(s);都可以。
上面只是转为JSON对象了,但是怎么转为JAVA BEAN 对象呢?
实体类:
public class Student { private String name; private int age; 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; } }
单个实体例子:
String s="{\"name\":\"zs\",\"age\":\"23\"}";
Student student=JSON.parseObject(s,Student.class);
System.out.println(student.getAge());
String s="{\"name\":\"zs\",\"age\":\"23\"}"; Student student=JSONObject.parseObject(s,Student.class); System.out.println(student.getAge()); 都可以。
多个实体例子
String s="[{\"name\":\"zs\",\"age\":\"23\"}]"; List<Student>students=JSON.parseArray(s,Student.class); System.out.println(students.size()); 可以的。
但是如果是复杂的数据呢?
类似于一个类里面有很多属性,有String的,也有List的属性。
{"code":200,
"msg":"请求成功!",
"error":""
"data":[
{"projectCode":"XM102020071510470","no":1,"dueDate":"2020-08-23","lastCompleteTime":"2020-08-25 00:00:00","status":"逾期还款","principalBalance":1914.27,"principalPaymemt":1914.27,"interestBalance":1222.67,"interestPayment":1222.67,"defaultInterestBalance":20.00,"defaultInterestPayment":20.00,"rentBalance":0.00,"rentPayment":0.00,"platformDefaultInterestBalance":0.00,"platformDefaultInterestPayment":0.00,"principalRemain":0.00,"interestRemain":0.00,"defaultInterestRemain":0.00,"rentRemain":0.00,"platformDefaultInterestRemain":0.00,"tatalBalance":0.00,"platformTransferFlag":"否","assetsDisposalStatus":"未处置"},
{"projectCode":"XM102020071510470","no":2,"dueDate":"2020-09-23","lastCompleteTime":"2020-09-23 00:00:00","status":"正常还款","principalBalance":1954.06,"principalPaymemt":1954.06,"interestBalance":1182.88,"interestPayment":1182.88,"defaultInterestBalance":0.00,"defaultInterestPayment":0.00,"rentBalance":0.00,"rentPayment":0.00,"platformDefaultInterestBalance":0.00,"platformDefaultInterestPayment":0.00,"principalRemain":0.00,"interestRemain":0.00,"defaultInterestRemain":0.00,"rentRemain":0.00,"platformDefaultInterestRemain":0.00,"tatalBalance":0.00,"platformTransferFlag":"否","assetsDisposalStatus":"未处置"},
{"projectCode":"XM102020071510470","no":3,"dueDate":"2020-10-23","lastCompleteTime":"2020-10-23 00:00:00","status":"正常还款","principalBalance":1994.67,"principalPaymemt":1994.67,"interestBalance":1142.27,"interestPayment":1142.27,"defaultInterestBalance":0.00,"defaultInterestPayment":0.00,"rentBalance":0.00,"rentPayment":0.00,"platformDefaultInterestBalance":0.00,"platformDefaultInterestPayment":0.00,"principalRemain":0.00,"interestRemain":0.00,"defaultInterestRemain":0.00,"rentRemain":0.00,"platformDefaultInterestRemain":0.00,"tatalBalance":0.00,"platformTransferFlag":"否","assetsDisposalStatus":"未处置"}
]
}
解决:JSON 提供了 TypeReference类。
TypeReference<QueryPageResult<MQPushReceiveDemo>> reference = new TypeReference<QueryPageResult<MQPushReceiveDemo>>() { };
红色部分就是要转换的结果类型,如果不这样子弄,那么操作上面的写为,也编译不了啊。
所以还是写为:
TypeReference<QueryPageResult<MQPushReceiveDemo>> reference = new TypeReference<QueryPageResult<MQPushReceiveDemo>>() {};
QueryPageResult<MQPushReceiveDemo> queryPageResult = JSON.parseObject(updateResultStr, reference.getType(), JSON.DEFAULT_PARSER_FEATURE);
就可以了。