• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

yxchun

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

解析json数组 , Java

使用JSONObject

1、需要解析的json串

{
  "retCode":0,
  "retMSg":"成功",
  "data":[
      {
          "name":"李雷",
          "id":"001",
          "score":{    
              "Chinese":"80",
              "Math":"95"
            },
             "schoolInfo": [
                {
                    "School_name": "清华"
                },
                {
                    "School_name": "北大"
                }
           ],
      },
      {
          "name":"韩梅梅",
          "id":"002",
          "score":{    
              "Chinese":"90",
              "Math":"80"
            },
                       "schoolInfo": [
                {
                    "School_name": "清华"
                },
                {
                    "School_name": "北大"
                }              ]
      
}
  ]  
}

 

json内部格式:

1 []中括号代表的是一个数组
2 {}大括号代表的是一个对象 在一个对象中还可能包含对象的属性 属性也可能是另外一个类
3 双引号“”表示的是属性值
4 冒号:代表的是前后之间的关系,冒号前面是属性的名称,后面是属性的值,这个值可以是基本数据类型,也可以是引用数据类型。

以上述代码为例,第一层是一个花括号的{}Json数组,json数组中包含retCode,retMSg以及data三个属性
第二层是data的JsonArray属性,每个花括号代表一个对象,每个对象中有name,id,score,schoolInfo四个属性。
第三层其中score属性下包含一个类,类中包含Chinese和Math两个属性。
schoolInfo是一个JsonArray数组,里面有School_name这个属性

Json提供的方法

JSONObject系统自带的解析方式解析,我们先来JSONObject(系统自带的类)类中的方法
其中JsonObjcet常用的构造方法是

 

 

二、Json数组的解析

对result中的每一个值进行取到以及解析
解析前准备工作:
可以将String类型的result转为Json数组类型

 

三、Json解析过程

import com.alibaba.fastjson.Json;
import com.alibaba.fastjson.JsonArray;
import com.alibaba.fastjson.JsonObject;

//转为jsonObject类型
JsonObject jsonObject=JSONObject.parseOject(result);
//取属性值
String returnCode=jsonObject.getString("retCode");
String returnMsg=jsonObject.getString("retMSg");
//取数组值
JSONArray parseArray=jsonObject.getJsonArray("data");
//对数组内部进行处理
for(int i=0;i<parseArray.size();i++){
//和常规数组get(i)是一样的 只不过是JSONObject类型
//eachObject是数组中的每一个类{},因为类包含的属性是相同的,所以相当于循环处理的是这部分
JsonObject eachObject=parseArray.getJSONObject(i);
//第二层的属性
String name=eachObject.getString("name");
String id=eachObject.getString("id");
//处理第三层的JSONObject对象sorce
JSONObject sorceObject=eachObject.getJSONObject("sorce");
//处理第三层JSONObject对象sorce内的属性
String Chinese=sorceObject.getString("Chinese");
String Math=sorceObject.getString("Math");
//处理第三层JSONObject对象内的schoolInfo属性
JSONArray schoolInfoArray = eachObject.getJSONArray("schoolInfo");
for (int j = 0; j < schoolInfoArray.length(); j++) {
    JSONObject schoolInfojson = schoolInfoArray.getJSONObject(j);
    String schoolName = schoolInfojson.getString("School_name");
    }
}
}

 

来源:https://blog.csdn.net/qq_44754976/article/details/121170951 ,感谢

来源: https://blog.csdn.net/oman001/article/details/79063278,感谢

posted on 2024-07-19 10:54  yxchun  阅读(221)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3