JSON转换MAP[],数组,对象

需求,JSON串
{
    "code": 200,
    "message": "成功",
    "data": [
        {
            "orderNo": "CSQY2021072700001711",
            "invoiceId": "21072811151401801961",
,
            "invoiceDetail": [
                {
                    "detailIndex": 0,
                    "goodsName": "其他经济代理服务",
                    "withTaxFlag": 0,
               
                }
            ]
        },
        {
            "orderNo": "CSQY2021072800001712",
            "invoiceId": "21072812251301802622",
    ,
            "invoiceDetail": [
                {
                    "detailIndex": 0,
                    "goodsName": "其他经济代理服务",
                    "withTaxFlag": 0,
               
                }
            ]
        }
}
这个json串临时得,没有实体类,所以对未知json串想要转换对象需要使用MAP。

1、导入 com.alibaba.fastjson.JSON  阿里巴巴的
2、字符串转换map对象,从而可以get获取数据。
map对象
String res = nnPostJson(param);
// ,转换map,获取data数据
Map resCode = JSONObject.parseObject(res, Map.class);

map集合
Map[] data = JSONObject.parseObject(resCode.get("data").toString(), Map[].class);
String id = (String) data[0].get("id");    

转换实体类集合, 需要使用new ArrayList<>(Arrays.asList(数组)) ,这种实现了真正list,如果Arrays.asList(数组)没有完成list其他crud操作,调用就会抛异常

ArrayList<InvInvoiceHistory> list = new ArrayList<>(Arrays.asList(JSONObject.parseObject(resCode.get("data").toString(), InvInvoiceHistory[].class)));

 


因为该json串中包含子json,且还是集合,所以需要先获取转换String,再通过上一步再次转换集合




posted @ 2021-07-30 10:44  幻樱落日剑  阅读(320)  评论(0编辑  收藏  举报