使用fastjson遇到的一点问题

[
{    
    "user_id": 5300,     
    "flag": 0,     
    "configs": [    
        {    
            "user_id": 5300,     
            "config_item_id": 1015,     
            "type": 0    
        },     
        {    
            "user_id": 5300,     
            "config_item_id": 1016,     
            "type": 0    
        }    
    ]    
}    
]

需要解析的json数据如上
百度搜到的解决方案:
http://bglmmz.iteye.com/blog/2154582

稍微修改了一下:

private static List<HashMap<String, Object>> fromJson2Map(String jsonString) {
        List<HashMap<String, Object>> listMap = new ArrayList<>();

        JSONArray jsonArrays = JSONArray.parseArray(jsonString);
        System.out.println("size = " + jsonArrays.size());

        for (int i = 0; i < jsonArrays.size(); i++) {
            HashMap jsonMap = JSON.parseObject(jsonArrays.get(i).toString(), HashMap.class);

            HashMap<String, Object> resultMap = new HashMap<String, Object>();
            for (Iterator iter = jsonMap.keySet().iterator(); iter.hasNext(); ) {
                String key = (String) iter.next();
                System.out.println("key = " + key);
                if (jsonMap.get(key) instanceof JSONArray) {
                    JSONArray jsonArray = (JSONArray) jsonMap.get(key);
                    List list = handleJSONArray(jsonArray);
                    resultMap.put(key, list);
                } else {
                    resultMap.put(key, jsonMap.get(key));
                }
            }
            listMap.add(resultMap);
        }
        return listMap;
    }

    private static List<HashMap<String, Object>> handleJSONArray(JSONArray jsonArray) {
        List list = new ArrayList();
        for (Object object : jsonArray) {
            JSONObject jsonObject = (JSONObject) object;
            HashMap map = new HashMap<String, Object>();
            for (Map.Entry entry : jsonObject.entrySet()) {
                if (entry.getValue() instanceof JSONArray) {
                    map.put((String) entry.getKey(), handleJSONArray((JSONArray) entry.getValue()));
                } else {
                    map.put((String) entry.getKey(), entry.getValue());
                }
            }
            list.add(map);
        }
        return list;
    }

调用:

List<HashMap<String, Object>> jsonMap = fromJson2Map(response.asString());
            System.out.println("jsonMap size " + jsonMap.size());

            for (HashMap<String, Object> aJsonMap : jsonMap) {
                List<HashMap> configDataList = (List<HashMap>) aJsonMap.get("fields");
                System.out.println("configDataList size  = " + configDataList.size());
                for (HashMap configData : configDataList) {
                    String type = (String) configData.get("type");
                    if (type.equals("select")) {
                        System.out.println("area_code: " + list.get(i).get("area_code") + " city_name: " + list.get(i).get("city_name"));
                        System.out.println(configData);
                    }
                }
            }

看来也就只会抄抄改改,也看不懂什么意思。。诶

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值