业务需求:
最近在调用自己封装的API接口的时候,由于API接口返回json数据,需要把json数据转为对象,进行业务判断和数据调用。封装的时候json格式种类很多,最常见的就是带有返回头的:
代码演示:
api接口返回的 result 字符串
String result= "{\n" +
" \"code\": 0,\n" +
" \"desc\": \"订单信息查询成功!\",\n" +
" \"orderStatus\": \"PENDING\",\n" +
" \"certStatus\": \"PENDING\",\n" +
" \"data\": {\n" +
" \"order\": {\n" +
" \"partnerOrderID\": \"1111111\",\n" +
" \"caOrderID\": \"111111\",\n" +
" \"commonName\": \"baidu.com\",\n" +
" \"CSR\": \"\",\n" +
" \"signatureAlgorithm\": \"SHA2-256\",\n" +
" \"SANs\": [\n" +
" \"test.com\"\n" +
" ]\n" +
" },\n" +
" \"verification\": {\n" +
" \"organization\": \"NONE\",\n" +
" \"phone\": \"NONE\",\n" +
" \"domain\": \"VERIFYING\"\n" +
" },\n" +
" \"organization\": {\n" +
" \"organizationID\": \"111111\",\n" +
" \"organizationName\": \"测试组\",\n" +
" \"countryOrAreaCode\": \"CN\",\n" +
" \"state\": \"北京市\"\n" +
" },\n" +
" \"contacts\": [\n" +
" {\n" +
" \"contactType\": \"CC\",\n" +
" \"firstName\": \"陈\",\n" +
" \"lastName\": \" 小橘\",\n" +
" \"phone\": \"13598056666\",\n" +
" \"email\": \"chen_xiaoju@itrus.com.cn\",\n" +
" \"title\": \"chen_xiaoju@itrus.com.cn\"\n" +
" }\n" +
" ],\n" +
" \"certs\": []\n" +
" }\n" +
"}";
新建接收的实体对象
public class ToolResultQuery {
private String result;
private Integer code;
private String desc;
private String orderStatus;
private String certStatus;
private DataQuery data;
//忽略get set
}
//DataQuery对象下的二级对象
public class DataQuery {
private Order_query order;
private Verification_query verification;
private Organization_query organization;
private List<Contacts_query> contacts;
private List<Certs_query> certs;
}
// Order_query
public class Order_query {
private String partnerOrderID;
private String caOrderID;
private String commonName;
private String CSR;
private String signatureAlgorithm;
private List<String> SANs;
}
...
//省略其他对象 ,必须保证json里出现的对象和你新建的对象格式保持一致。
调用Gson fromJson()
ToolResultQuery toolResultQuery = new Gson().fromJson(result,ToolResultQuery.class);