前言
平时工作中,需要调用接口,并获取返回结果json格式数据中字段值,每次都是现场网络搜索相关方法,我觉得很有必要进行梳理下,后续可以直接使用。
git仓库地址,github.com/alibaba/fas…
具体示例
关于json数据格式化(层级比较清晰,而不是堆在一起),可以直接使用vscode编辑器查看。
{
"code": "200",
"data": {
"currentPage": 1,
"totalNumber": 200,
"pageData": [
{
"name": "zhangshang",
"age": 18
},
{
"name": "lisi",
"age": 20
}
]
}
}
PS,在编辑器中看到的数据,层次更加清晰。上述json数据中,还包含了对象,数组。
获取字段值
导入的依赖
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
常见方法
// 将json内容的字符串类型转换为json格式对象
JSONObject jsonObject = JSON.parseObject(jsonStr);
// 情况1,json格式,第一层中字段code的值
String code = jsonObject.getString("code");
System.out.println("code: " + code);
// 情况2,json格式,第二层中data有多个字段,currentPage字段的值
JSONObject dataJsonObject = jsonObject.getJSONObject("data");
int currentPage = dataJsonObject.getIntValue("currentPage");
System.out.println("currentPage: " + currentPage);
// 情况3,json格式,第二层中data有多个字段,包含数组,获取数组中name字段的值
JSONArray pageDataArray = jsonObject.getJSONObject("data").getJSONArray("pageData");
for (int i = 0; i < pageDataArray.size(); i++) {
JSONObject pageDataObject = pageDataArray.getJSONObject(i);
System.out.println("name: " + pageDataObject.getString("name"));
}
虽然上述提到3情况,其实只要区分对象还是数组就可以了,无非可能是嵌套几层的情况。
获取对象的值,使用getJSONObject()。
获取数组的值,使用getJSONArray()。
直接获取字段值,getString(),可能还涉及到不同类型值的一些方法。
说点其它
其实很多东西大部分人都是停留在应用层面,我觉得这没问题。先解决基本使用问题,再慢慢深入,理解实现流程。由浅及深,需要一个过程。最近也在跑步,我在想,每个人都有自己的节奏,适合自己的,才是最好的。