处理后端返回的数据
首先要用到的库依赖
implementation 'com.alibaba:fastjson:1.2.68'
以以下后端返回的数据举例
{
"Data": [
{
"string1": "string",
"string2": "string",
"string3": "string",
"string4": "string",
"string5": 0,
}
],
"retCode": "1",
"retMsg": "获取正常"
}
后端返回的是String,拿到这个String转换成JSONObject,"Data","retCode","retMsg"是同级
retCode是返回码,retMsg是接口返回的信息
//string是返回一个整体,就是包括最外面的花括号
JSONObject jo = new JSONObject(string);
//然后可以拿到retData,retCode,retMsg
String retMsg = jo.getString("retMsg");
String retCode = jo.getString("retCode");
//拿到retData同样的
String retData = jo.getString("retData");
//拿到retData下面的数据,因retData是一个集合,把retDatat这个String转换成JOSNArray
JOSNArray ja = new JSONArray(retData);
//循环ja拿到retData下面的数据
for(int i = 0; i < ja.length(); i++) {
//拿到ja下面的每一个集合,此处只有一个集合
JSONObject jsonobjet = ja.getJSONObject(i);
//拿到当前集合下的每一个字段
String string1 = jsonobject.optString("string1");
String string2 = jsonobject.optString("string2");
String string3 = jsonobject.optString("string3");
String string4 = jsonobject.optString("string4");
String string5 = jsonobject.optString("string5");
}
retData里面还有集合
{
"retData": {
"String1": "0000",
"String2": "String",
"String3": "String",
"Detail": [
{
"item1": "0000",
"item2": "String",
"item3": "String"
},
{
"item1": "0000",
"item2": "String",
"item3": "String"
},
{
"item1": "0000",
"item2": "J1001",
"item3": "HSD-1"
}
]
},
"retCode": "1",
"retMsg": "获取正常"
}
//string是返回一个整体,就是包括最外面的花括号
JSONObject jo = new JSONObject(string);
//然后可以拿到retData,retCode,retMsg
String retMsg = jo.getString("retMsg");
String retCode = jo.getString("retCode");
//拿到retData同样的
String retData = jo.getString("retData");
//拿到retData下面的数据,因retData不是一个集合,只是下面有一个元素是集合,先把retDatat这个String转换成JSONObjcet
JSONObject jo1 = new JSONObject(retData);
//直接拿到jo1里的元素
String string1 = jo1.optString("string1");
String string2 = jo1.optString("string2");
String string3 = jo1.optString("string3");
//同样的方式拿到集合这个元素
String string4 = jo1.optString("Detail");
//由于Detail是集合,所以要把它转成JSONArray
JSONArray ja = new JSONArray(string4);
//循环ja拿到detail下面的数据
for(int i = 0; i < ja.length(); i++) {
//拿到ja下面的每一个集合,此处只有一个集合
JSONObject jsonobjet = ja.getJSONObject(i);
//拿到当前集合下的每一个字段
String string1 = jsonobject.optString("item1");
String string2 = jsonobject.optString("item2");
String string3 = jsonobject.optString("item3");
}
另一种结构
{
"retData": {
"String1": "string",
"String2": 3,
"String3": "J1006",
},
"retCode": "1",
"retMsg": "获取正常"
}
retData不是集合的情况
//前面都是一样的
JSONObject jo = new JSONObject(string);
String retMsg = jo.getString("retMsg");
String retCode = jo.getString("retCode");
String retData = jo.getString("retData");
//拿到retData下面的数据,retData不是集合,把retDatat这个String转换成JSONObject
JSONObject jo1 = new JSONObject(retData);
//jo1本身就是一个JOSNObject,直接可以拿到retData下面的数据
String string1 = jo1 .optString("string1");
String string2 = jo1 .optString("string2");
String string3 = jo1 .optString("string3");