复杂JSONObject对象的解析
目录
1、需要解析的JSONObject对象
{
"code":1,
"msg":"成功",
"data":{
"total":1,
"enterpriseList":[
{
"custId":"ICC2022081716192350E9CF73",
"custName":"百大集团有限公司",
"custShortName":"",
"region":"",
"rank":"",
"custType":"",
"certType":"",
"orgNo":"",
"taxpayerNo":"",
"creditCode":"",
"ecifNo":"",
"country":"",
"regAddress":"",
"officeAddress":"",
"businessScope":"",
"industryType":"",
"entType":"",
"regCapital":"",
"capitalCurrency":"",
"regOrg":"",
"regStatus":"",
"regDate":"",
"regNo":"",
"legalRepType":"",
"creator":"0",
"listingAttribute":"",
"serviceTeam":[
{
"staffName":"",
"staffNo":"",
"roleName":"",
"roleCode":""
}
],
"extraInfo":{
"account":""
}
}
]
}
}
2、根据JSONObject对象生成对应的实体类
层1:JsonRootBean
package model;
/**
* Auto-generated: 2022-08-17 21:18:20
*
* @author json.cn (i@json.cn)
* @website http://www.json.cn/java2pojo/
*/
public class JsonRootBean<T> {
private int code;
private String msg;
private T data;
public void setCode(int code) {
this.code = code;
}
public int getCode() {
return code;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getMsg() {
return msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
@Override
public String toString() {
return "JsonRootBean{" +
"code=" + code +
", msg='" + msg + '\'' +
", data=" + data.toString() +
'}';
}
}
层2:Data
package model;
import java.util.List;
/**
* Auto-generated: 2022-08-17 21:18:20
*
* @author json.cn (i@json.cn)
* @website http://www.json.cn/java2pojo/
*/
public class Data {
private int total;
private List<EnterpriseList> enterpriseList;
public void setTotal(int total) {
this.total = total;
}
public int getTotal() {
return total;
}
public void setEnterpriseList(List<EnterpriseList> enterpriseList) {
this.enterpriseList = enterpriseList;
}
public List<EnterpriseList> getEnterpriseList() {
return enterpriseList;
}
@Override
public String toString() {
return "Data{" +
"total=" + total +
", enterpriseList=" + enterpriseList.toString() +
'}';
}
}
层3:EnterpriseList
package model;
import java.util.List;
/**
* Auto-generated: 2022-08-17 21:18:20
*
* @author json.cn (i@json.cn)
* @website http://www.json.cn/java2pojo/
*/
public class EnterpriseList {
private String custId;
private String custName;
private String custShortName;
private String region;
private String rank;
private String custType;
private String certType;
private String orgNo;
private String taxpayerNo;
private String creditCode;
private String ecifNo;
private String country;
private String regAddress;
private String officeAddress;
private String businessScope;
private String industryType;
private String entType;
private String regCapital;
private String capitalCurrency;
private String regOrg;
private String regStatus;
private String regDate;
private String regNo;
private String legalRepType;
private String legalRep;
private String creator;
private String listingAttribute;
private List<ServiceTeam> serviceTeam;
private ExtraInfo extraInfo;
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustId() {
return custId;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCustName() {
return custName;
}
public void setCustShortName(String custShortName) {
this.custShortName = custShortName;
}
public String getCustShortName() {
return custShortName;
}
public void setRegion(String region) {
this.region = region;
}
public String getRegion() {
return region;
}
public void setRank(String rank) {
this.rank = rank;
}
public String getRank() {
return rank;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getCustType() {
return custType;
}
public void setCertType(String certType) {
this.certType = certType;
}
public String getCertType() {
return certType;
}
public void setOrgNo(String orgNo) {
this.orgNo = orgNo;
}
public String getOrgNo() {
return orgNo;
}
public void setTaxpayerNo(String taxpayerNo) {
this.taxpayerNo = taxpayerNo;
}
public String getTaxpayerNo() {
return taxpayerNo;
}
public void setCreditCode(String creditCode) {
this.creditCode = creditCode;
}
public String getCreditCode() {
return creditCode;
}
public void setEcifNo(String ecifNo) {
this.ecifNo = ecifNo;
}
public String getEcifNo() {
return ecifNo;
}
public void setCountry(String country) {
this.country = country;
}
public String getCountry() {
return country;
}
public void setRegAddress(String regAddress) {
this.regAddress = regAddress;
}
public String getRegAddress() {
return regAddress;
}
public void setOfficeAddress(String officeAddress) {
this.officeAddress = officeAddress;
}
public String getOfficeAddress() {
return officeAddress;
}
public void setBusinessScope(String businessScope) {
this.businessScope = businessScope;
}
public String getBusinessScope() {
return businessScope;
}
public void setIndustryType(String industryType) {
this.industryType = industryType;
}
public String getIndustryType() {
return industryType;
}
public void setEntType(String entType) {
this.entType = entType;
}
public String getEntType() {
return entType;
}
public void setRegCapital(String regCapital) {
this.regCapital = regCapital;
}
public String getRegCapital() {
return regCapital;
}
public void setCapitalCurrency(String capitalCurrency) {
this.capitalCurrency = capitalCurrency;
}
public String getCapitalCurrency() {
return capitalCurrency;
}
public void setRegOrg(String regOrg) {
this.regOrg = regOrg;
}
public String getRegOrg() {
return regOrg;
}
public void setRegStatus(String regStatus) {
this.regStatus = regStatus;
}
public String getRegStatus() {
return regStatus;
}
public void setRegDate(String regDate) {
this.regDate = regDate;
}
public String getRegDate() {
return regDate;
}
public void setRegNo(String regNo) {
this.regNo = regNo;
}
public String getRegNo() {
return regNo;
}
public void setLegalRepType(String legalRepType) {
this.legalRepType = legalRepType;
}
public String getLegalRepType() {
return legalRepType;
}
public void setCreator(String creator) {
this.creator = creator;
}
public String getCreator() {
return creator;
}
public void setListingAttribute(String listingAttribute) {
this.listingAttribute = listingAttribute;
}
public String getListingAttribute() {
return listingAttribute;
}
public void setServiceTeam(List<ServiceTeam> serviceTeam) {
this.serviceTeam = serviceTeam;
}
public List<ServiceTeam> getServiceTeam() {
return serviceTeam;
}
public void setExtraInfo(ExtraInfo extraInfo) {
this.extraInfo = extraInfo;
}
public ExtraInfo getExtraInfo() {
return extraInfo;
}
public String getLegalRep() {
return legalRep;
}
public void setLegalRep(String legalRep) {
this.legalRep = legalRep;
}
@Override
public String toString() {
return "EnterpriseList{" +
"custId='" + custId + '\'' +
", custName='" + custName + '\'' +
", custShortName='" + custShortName + '\'' +
", region='" + region + '\'' +
", rank='" + rank + '\'' +
", custType='" + custType + '\'' +
", certType='" + certType + '\'' +
", orgNo='" + orgNo + '\'' +
", taxpayerNo='" + taxpayerNo + '\'' +
", creditCode='" + creditCode + '\'' +
", ecifNo='" + ecifNo + '\'' +
", country='" + country + '\'' +
", regAddress='" + regAddress + '\'' +
", officeAddress='" + officeAddress + '\'' +
", businessScope='" + businessScope + '\'' +
", industryType='" + industryType + '\'' +
", entType='" + entType + '\'' +
", regCapital='" + regCapital + '\'' +
", capitalCurrency='" + capitalCurrency + '\'' +
", regOrg='" + regOrg + '\'' +
", regStatus='" + regStatus + '\'' +
", regDate='" + regDate + '\'' +
", regNo='" + regNo + '\'' +
", legalRep='" + legalRep + '\'' +
", legalRepType='" + legalRepType + '\'' +
", creator='" + creator + '\'' +
", listingAttribute='" + listingAttribute + '\'' +
", serviceTeam=" + serviceTeam.toString() +
", extraInfo=" + extraInfo.toString() +
'}';
}
}
层4-1:ServiceTeam
package model;
/**
* Auto-generated: 2022-08-17 21:18:20
*
* @author json.cn (i@json.cn)
* @website http://www.json.cn/java2pojo/
*/
public class ServiceTeam {
private String staffName;
private String staffNo;
private String roleName;
private String roleCode;
public void setStaffName(String staffName) {
this.staffName = staffName;
}
public String getStaffName() {
return staffName;
}
public void setStaffNo(String staffNo) {
this.staffNo = staffNo;
}
public String getStaffNo() {
return staffNo;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getRoleName() {
return roleName;
}
public void setRoleCode(String roleCode) {
this.roleCode = roleCode;
}
public String getRoleCode() {
return roleCode;
}
@Override
public String toString() {
return "ServiceTeam{" +
"staffName='" + staffName + '\'' +
", staffNo='" + staffNo + '\'' +
", roleName='" + roleName + '\'' +
", roleCode='" + roleCode + '\'' +
'}';
}
}
层4-2:ExtraInfo
package model;
/**
* Auto-generated: 2022-08-17 21:18:20
*
* @author json.cn (i@json.cn)
* @website http://www.json.cn/java2pojo/
*/
public class ExtraInfo {
private String account;
public void setAccount(String account) {
this.account = account;
}
public String getAccount() {
return account;
}
@Override
public String toString() {
return "ExtraInfo{" +
"account='" + account + '\'' +
'}';
}
}
3、编写Test类进行解析
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import model.*;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
String jsonString =
"{\n" +
" \"code\":1,\n" +
" \"msg\":\"成功\",\n" +
" \"data\":{\n" +
" \"total\":1,\n" +
" \"enterpriseList\":[\n" +
" {\n" +
" \"custName\":\"百大集团有限公司\",\n" +
" \"custShortName\":\"\",\n" +
" \"region\":\"\",\n" +
" \"rank\":\"\",\n" +
" \"custType\":\"\",\n" +
" \"certType\":\"\",\n" +
" \"orgNo\":\"\",\n" +
" \"taxpayerNo\":\"\",\n" +
" \"creditCode\":\"\",\n" +
" \"ecifNo\":\"\",\n" +
" \"country\":\"\",\n" +
" \"regAddress\":\"\",\n" +
" \"officeAddress\":\"\",\n" +
" \"businessScope\":\"\",\n" +
" \"industryType\":\"\",\n" +
" \"entType\":\"\",\n" +
" \"regCapital\":\"\",\n" +
" \"capitalCurrency\":\"\",\n" +
" \"regOrg\":\"\",\n" +
" \"regStatus\":\"\",\n" +
" \"regDate\":\"\",\n" +
" \"regNo\":\"\",\n" +
" \"legalRepType\":\"\",\n" +
" \"creator\":\"0\",\n" +
" \"listingAttribute\":\"\",\n" +
" \"serviceTeam\":[\n" +
" {\n" +
" \"staffName\":\"\",\n" +
" \"staffNo\":\"\",\n" +
" \"roleName\":\"\",\n" +
" \"roleCode\":\"\"\n" +
" }\n" +
" ],\n" +
" \"extraInfo\":{\n" +
" \"account\":\"\"\n" +
" }\n" +
" }\n" +
" ]\n" +
" }\n" +
"}";
// 将字符串转成JSONObject对象
JSONObject jsonObject = JSONObject.parseObject(jsonString);
// 创建JsonRootBean<Data>对象
// 一级 JSONObject对象
JsonRootBean<Data> jsonRootBean = new JsonRootBean<>();
// 赋值
jsonRootBean.setCode(jsonObject.getInteger("code"));
jsonRootBean.setMsg(jsonObject.getString("msg"));
// 获取 data 对应的 JSONObject对象 jsonObjectData
// 二级 JSONObject对象
JSONObject jsonObjectData = jsonObject.getJSONObject("data");
// 创建Data对象
Data data = new Data();
// 赋值
data.setTotal(jsonObjectData.getInteger("total"));
// 创建List<EnterpriseList>对象
List<EnterpriseList> enterpriseList = new ArrayList<>();
// 获取 enterpriseList 对应的 JSONArray对象 jsonArrayEnterpriseList
// 三级 JSONArray对象
JSONArray jsonArrayEnterpriseList = jsonObjectData.getJSONArray("enterpriseList");
// 遍历 jsonArrayEnterpriseList
for (int i = 0; i < jsonArrayEnterpriseList.size(); i++) {
// 创建 JSONObject对象 jsonObjectIndex1
// 遍历赋值为 JSONArray数组 里面的每个 JSONObject对象
JSONObject jsonObjectIndex1 = jsonArrayEnterpriseList.getJSONObject(i);
// 创建 EnterpriseList对象
EnterpriseList list = new EnterpriseList();
// 赋值
list.setCustId(jsonObjectIndex1.getString("custId"));
list.setCustName(jsonObjectIndex1.getString("custName"));
list.setCustShortName(jsonObjectIndex1.getString("custShortName"));
list.setRegion(jsonObjectIndex1.getString("region"));
list.setRank(jsonObjectIndex1.getString("rank"));
list.setCustType(jsonObjectIndex1.getString("custType"));
list.setCertType(jsonObjectIndex1.getString("certType"));
list.setOrgNo(jsonObjectIndex1.getString("orgNo"));
list.setTaxpayerNo(jsonObjectIndex1.getString("taxpayerNo"));
list.setCreditCode(jsonObjectIndex1.getString("creditCode"));
list.setEcifNo(jsonObjectIndex1.getString("ecifNo"));
list.setCountry(jsonObjectIndex1.getString("country"));
list.setRegAddress(jsonObjectIndex1.getString("regAddress"));
list.setOfficeAddress(jsonObjectIndex1.getString("officeAddress"));
list.setBusinessScope(jsonObjectIndex1.getString("businessScope"));
list.setIndustryType(jsonObjectIndex1.getString("industryType"));
list.setEntType(jsonObjectIndex1.getString("entType"));
list.setRegCapital(jsonObjectIndex1.getString("regCapital"));
list.setCapitalCurrency(jsonObjectIndex1.getString("capitalCurrency"));
list.setRegOrg(jsonObjectIndex1.getString("regOrg"));
list.setRegStatus(jsonObjectIndex1.getString("regStatus"));
list.setRegDate(jsonObjectIndex1.getString("regDate"));
list.setRegNo(jsonObjectIndex1.getString("regNo"));
list.setLegalRep(jsonObjectIndex1.getString("legalRep"));
list.setLegalRepType(jsonObjectIndex1.getString("legalRepType"));
list.setCreator(jsonObjectIndex1.getString("creator"));
list.setListingAttribute(jsonObjectIndex1.getString("listingAttribute"));
// 创建 List<ServiceTeam>对象
List<ServiceTeam> serviceTeamList = new ArrayList<>();
// 获取 serviceTeam 对应的 JSONArray对象 jsonArrayServiceTeam
// 四级 JSONArray对象
JSONArray jsonArrayServiceTeam = jsonObjectIndex1.getJSONArray("serviceTeam");
// 遍历
for (int j = 0; j < jsonArrayServiceTeam.size(); j++) {
// 同上
JSONObject jsonObjectIndex2 = jsonArrayServiceTeam.getJSONObject(j);
ServiceTeam serviceTeam = new ServiceTeam();
serviceTeam.setStaffName(jsonObjectIndex2.getString("staffName"));
serviceTeam.setStaffNo(jsonObjectIndex2.getString("staffNo"));
serviceTeam.setRoleName(jsonObjectIndex2.getString("roleName"));
serviceTeam.setRoleCode(jsonObjectIndex2.getString("roleCode"));
// 放进集合
serviceTeamList.add(serviceTeam);
}
// 放进集合
list.setServiceTeam(serviceTeamList);
// 创建 ExtraInfo对象
ExtraInfo extraInfo = new ExtraInfo();
// 获取 extraInfo 对应的 JSONObject对象 jsonObjectExtraInfo
// 四级 JSONObject对象
JSONObject jsonObjectExtraInfo = jsonObjectIndex1.getJSONObject("extraInfo");
extraInfo.setAccount(jsonObjectExtraInfo.getString("account"));
// 放进集合
list.setExtraInfo(extraInfo);
// 放进集合
enterpriseList.add(list);
}
// 赋值
data.setEnterpriseList(enterpriseList);
// 赋值
jsonRootBean.setData(data);
// 打印解析结果
System.out.println(jsonRootBean);
}
}
4、打印解析结果
JsonRootBean{code=1, msg='成功', data=Data{total=1, enterpriseList=[EnterpriseList{custId='null', custName='百大集团有限公司', custShortName='', region='', rank='', custType='', certType='', orgNo='', taxpayerNo='', creditCode='', ecifNo='', country='', regAddress='', officeAddress='', businessScope='', industryType='', entType='', regCapital='', capitalCurrency='', regOrg='', regStatus='', regDate='', regNo='', legalRep='null', legalRepType='', creator='0', listingAttribute='', serviceTeam=[ServiceTeam{staffName='', staffNo='', roleName='', roleCode=''}], extraInfo=ExtraInfo{account=''}}]}}
5、项目结构
导入依赖:
<dependency>
<groupId>top.jfunc.common</groupId>
<artifactId>converter</artifactId>
<version>1.8.0</version>
</dependency>