要解析的json数据:
{
"message": "成功",
"result": "00",
"queryid": "0abcaa21-b9aa-4ef6-bcd7-708b9296acdd",
"data": {
"detail": [{
"num": "123",
"time": "2019-02-23",
"type": "2"
}],
"openid": "oE72L5bO4pwml6n1e87KZbPAcCD0"
}
}
看似简单(数据量少),其实也不简单(结构略复杂,包含了json对象与json数组)。
如:上图中红框中的数据格式就是json对象,而其中蓝框中的数据格式又是json数组。
现在将其中所有json信息解析出来,具体参考下方代码:
package com.sweetstreet.server.api;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.List;
public class test {
public static void main(String[] args) {
String s="{\n" +
"\t\"message\": \"成功\",\n" +
"\t\"result\": \"00\",\n" +
"\t\"queryid\": \"0abcaa21-b9aa-4ef6-bcd7-708b9296acdd\",\n" +
"\t\"data\": {\n" +
"\t\t\"detail\": [{\n" +
"\t\t\t\"num\": \"123\",\n" +
"\t\t\t\"time\": \"2019-02-23\",\n" +
"\t\t\t\"type\": \"2\"\n" +
"\t\t}],\n" +
"\t\t\"openid\": \"oE72L5bO4pwml6n1e87KZbPAcCD0\"\n" +
"\t}\n" +
"}";
String data = JSON.parseObject(s).getString("data");
// 1 返回json
JSONArray list1 = (JSONArray) JSON.parseObject(data).get("detail");
System.out.println(list1);
// 2 返回可直接操作List对象
List<Test1> list2 = JSON.parseArray(JSON.parseObject(data).getString("detail"), Test1.class);
System.out.println(list2);
// 3 返回json
List list3 = JSON.parseObject(data).getObject("detail", List.class);
System.out.println(list3);
for (Object re : list3) {
JSONObject jsonObject = JSON.parseObject(String.valueOf(re));
String num = jsonObject.getString("num");
String time = jsonObject.getString("time");
String type = jsonObject.getString("type");
System.out.println("num : "+num);
System.out.println("time : "+time);
System.out.println("type : "+type);
}
}
}
输出结果:
注意以上导包都是com.alibaba.fastjson.json,不要搞错了。
获取指定格式数据后,getString()获取指定key对应的value值即可。