解析复杂嵌套的json报文,三层list嵌套,报文示例如下:
{
"returnCode": "000",
"returnMsg": "查询成功有数据",
"policyInfo": [
{
"insuranceInfo": [
{
"insuranceId": "第二层list元素1",
"paymentInfo": [
{
"name": "第三层list元素1"
}
],
"AdvanceInfo": []
}
],
"policyId": "第一层list元素1"
},
{
"insuranceInfo": [],
"policyId": "第一层list元素2"
}
]
}
JsonTest入口类:
package com.demo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class JsonTest {
public static void main(String[] args) {
JsonTest test = new JsonTest();
Map<String,Object> resultMap = new HashMap<>(4);
resultMap.put("returnCode", "000");
resultMap.put("returnMsg","查询成功有数据");
List<Map<String,Object>> policyInfo = new ArrayList<>();
Map<String,Object> ele1 = new HashMap<>();
ele1.put("policyId","第一层list元素1");
List<Map<String,Object>> insuranceInfo = new ArrayList<>();
Map<String,Object> ele11 = new HashMap<>();
ele11.put("insuranceId","第二层list元素1");
List<Map<String,Object>> paymentInfo = new ArrayList<>();
Map<String,Object> ele111 = new HashMap<>();
ele111.put("name","第三层list元素1");
paymentInfo.add(ele111);
ele11.put("paymentInfo",paymentInfo);
ele11.put("AdvanceInfo",new ArrayList<Map>());
insuranceInfo.add(ele11);
ele1.put("insuranceInfo",insuranceInfo);
policyInfo.add(ele1);
Map<String,Object> ele2 = new HashMap<>();
ele2.put("policyId","第一层list元素2");
ele2.put("insuranceInfo",new ArrayList<>());
policyInfo.add(ele2);
resultMap.put("policyInfo",policyInfo);
System.out.println(resultMap);
String jsonStr = JSON.toJSONString(resultMap);
System.out.println(jsonStr);
Map<String,Object> map = test.jsonStrParse(jsonStr);
System.out.println(map);
}
private Map<String,Object> jsonStrParse(String jsonStr){
Map<String,Object> resultMap = new HashMap<>();
JSONObject jsonObject = JSON.parseObject(jsonStr);
String policyInfo = jsonObject.getString("policyInfo");
List<PolicyInfo> list = JSON.parseArray(policyInfo, PolicyInfo.class);
resultMap.put("policyInfo",list);//可在当前行打断点查询list结构
return resultMap;
}
}
构造的实体类PolicyInfo:
package com.demo;
import java.util.List;
import java.util.Map;
public class PolicyInfo {
private String policyId;
private List<insuranceInfo> insuranceInfo;
public String getPolicyId() {
return policyId;
}
public void setPolicyId(String policyId) {
this.policyId = policyId;
}
public List<PolicyInfo.insuranceInfo> getInsuranceInfo() {
return insuranceInfo;
}
public void setInsuranceInfo(List<PolicyInfo.insuranceInfo> insuranceInfo) {
this.insuranceInfo = insuranceInfo;
}
class insuranceInfo {
private String insuranceId;
private List<Map<String, Object>> paymentInfo;
private List<Map<String, Object>> advanceInfo;
public String getInsuranceId() {
return insuranceId;
}
public void setInsuranceId(String insuranceId) {
this.insuranceId = insuranceId;
}
public List<Map<String, Object>> getPaymentInfo() {
return paymentInfo;
}
public void setPaymentInfo(List<Map<String, Object>> paymentInfo) {
this.paymentInfo = paymentInfo;
}
public List<Map<String, Object>> getAdvanceInfo() {
return advanceInfo;
}
public void setAdvanceInfo(List<Map<String, Object>> advanceInfo) {
this.advanceInfo = advanceInfo;
}
}
}
控制台输出结果:
"C:\Program Files\Java\jdk1.8.0_151\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.2\lib\idea_rt.jar=3176:C:\Program Files\JetBrains\IntelliJ IDEA 2018.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_151\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\rt.jar;D:\workspace\MavenDemo\target\classes;D:\repository\com\alibaba\fastjson\1.2.7\fastjson-1.2.7.jar" com.demo.JsonTest
{returnCode=000, returnMsg=查询成功有数据, policyInfo=[{insuranceInfo=[{insuranceId=第二层list元素1, paymentInfo=[{name=第三层list元素1}], AdvanceInfo=[]}], policyId=第一层list元素1}, {insuranceInfo=[], policyId=第一层list元素2}]}
{"returnCode":"000","returnMsg":"查询成功有数据","policyInfo":[{"insuranceInfo":[{"insuranceId":"第二层list元素1","paymentInfo":[{"name":"第三层list元素1"}],"AdvanceInfo":[]}],"policyId":"第一层list元素1"},{"insuranceInfo":[],"policyId":"第一层list元素2"}]}
[com.demo.PolicyInfo@2aae9190, com.demo.PolicyInfo@2f333739]
{policyInfo=[com.demo.PolicyInfo@2aae9190, com.demo.PolicyInfo@2f333739]}
Process finished with exit code 0
博客内容涉及使用FastJson库解析包含三层嵌套结构的JSON字符串,通过提供具体的JsonTest入口类和PolicyInfo实体类的示例进行说明。
936

被折叠的 条评论
为什么被折叠?



