Android 处理后端返回的数据

处理后端返回的数据

首先要用到的库依赖

 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");


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值