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,再通过上一步再次转换集合
JavaScript