JSON数据处理(转对象、转List)

1、引入hutool工具类

 <dependency>
     <groupId>cn.hutool</groupId>
     <artifactId>hutool-all</artifactId>
     <version>5.3.5</version>
 </dependency>

2、JOSN转对象

  1. 数据格式
{
    "code": 1,
    "message": "success",
    "data": [
        {
            "roadName": "成渝环线高速",
            "direction": 2,
            "congestLength": 8.56,
            "congestTotalLength": 63.06,
            "totalLength": 91.22,
            "minutes": 75,
            "driveIndex": 0.32,
            "driveDegree": 2,
            "congestPercent": 69
        },
        {
            "roadName": "沪蓉高速",
            "direction": 2,
            "congestLength": 3.642,
            "congestTotalLength": 30.7,
            "totalLength": 68.68,
            "minutes": 170,
            "driveIndex": 0.16,
            "driveDegree": 1,
            "congestPercent": 45
        }
    ],
    "attrs": null
}
  1. 转对象
public VehicleInfoBO getRemoteVehicleBaseInfo(String vehiclePlateNum) {
        String url = REMOTE_URL + "/wisdomCityHandler/getVehicleBaseInfo";
        Map<String, Object> params = new HashMap<>(16);
        params.put("vehiclePlateNum",vehiclePlateNum);
        String remoteDataString = HttpUtil.get(url, params);
        if (StrUtil.isEmpty(remoteDataString)) {
            return null;
        }
        //转jsonObject去获取data数据
        JSONObject jsonObject1 = JSONUtil.parseObj(remoteDataString);
        String str = jsonObject1.getStr("data");
        JSONObject dataObject = JSONUtil.parseObj(str);

        return dataObject.toBean(VehicleInfoBO.class);
    }

3、转list

  1. 数据格式
{
    "code":1,
    "message":"success",
    "data":[
    	{
            "lukInfoBOs":[
                {
                    "zcuid":"18284",
                    "zcuidName":"双流界至机场"
                },
                {
                    "zcuid":"18283",
                    "zcuidName":"双流界至机场"
                }
            ],
            "wiseTollBOs": [
                {
                    "tollName": "四川机场双流站",
                    "tollId": "S0006510010010"
                }
            ],
            "congestionLength": 0.54,
            "roadLength": 26.346,
            "rate": "2.04%"
       },
      {
            "lukInfoBOs":[
                {
                    "zcuid":"18284",
                    "zcuidName":"双流界至机场"
                },
                {
                    "zcuid":"18283",
                    "zcuidName":"双流界至机场"
                }
            ],
            "wiseTollBOs": [
                {
                    "tollName": "四川机场双流站",
                    "tollId": "S0006510010010"
                }
            ],
            "congestionLength": 0.54,
            "roadLength": 26.346,
            "rate": "2.04%"
       }   
   ] 
}  
  1. 转list
 public List<WiseLukInfoBO> getRemoteWiseLukInfo(String stationCode, Boolean isMatchToll) {
        String url = REMOTE_URL + "/wisdomCityHandler/getWiseCongestionInfo";

        Map<String, Object> params = new HashMap<>(16);
        params.put("stationCode",stationCode);
        params.put("isMatchToll",isMatchToll);
        String remoteDataString = HttpUtil.get(url, params);

        if (StrUtil.isEmpty(remoteDataString)) {
            return null;
        }
        //结果集合
        List<WiseLukInfoBO> dataList = new ArrayList<>();

        //转jsonObject去获取data数据
        JSONObject jsonObject = JSONUtil.parseObj(remoteDataString);
        String str = jsonObject.getStr("data");
        //获取到的data数据
        JSONArray dataArray = JSONUtil.parseArray(str);
        for (int i =0;i < dataArray.size();i++) {
            //data中的某一条数据
            String dataArrayStr = dataArray.getStr(i);
            JSONObject jsonObjectData = JSONUtil.parseObj(dataArrayStr);
            WiseLukInfoBO bo = jsonObjectData.toBean(WiseLukInfoBO.class);

            //路段集合返回类
            List<LukInfoBO> lukInfoBOList = new ArrayList<>();
            //1、这条数据中的List<LukInfoBO>集合
            String lukInfoString = jsonObjectData.getStr("lukInfoBOs");
            JSONArray lukInfoStringArray = JSONUtil.parseArray(lukInfoString);
            for (int j =0;j < lukInfoStringArray.size();j++) {
                //集合中的某一条数据
                String arrayString = lukInfoStringArray.getStr(j);
                JSONObject listObject = JSONUtil.parseObj(arrayString);
                LukInfoBO lukInfoBO = listObject.toBean(LukInfoBO.class);

                lukInfoBOList.add(lukInfoBO);
            }
            //2、这条数据中的List<WiseTollBO>集合
            List<WiseTollBO> wiseTollListData = new ArrayList<>();
            String wiseTollListString = jsonObjectData.getStr("wiseTollBOs");
            JSONArray wiseTollListArray = JSONUtil.parseArray(wiseTollListString);
            for (int x =0;x < wiseTollListArray.size();x++) {
                //集合中的某一条数据
                String arrayString = wiseTollListArray.getStr(x);
                JSONObject listObject = JSONUtil.parseObj(arrayString);
                WiseTollBO wiseTollBO = listObject.toBean(WiseTollBO.class);

                wiseTollListData.add(wiseTollBO);
            }

            bo.setLukInfoBOs(lukInfoBOList);
            bo.setWiseTollBOs(wiseTollListData);

            dataList.add(bo);
        }

        return dataList;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值