首页 > 编程语言 >解析json数组 , Java

解析json数组 , Java

时间:2024-07-19 10:57:53浏览次数:12  
标签:School Java name Json json 数组 解析 属性

使用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,感谢

标签:School,Java,name,Json,json,数组,解析,属性
From: https://www.cnblogs.com/ychun/p/18311057

相关文章

  • llamafactory/data/formatter.py [源码解析]
    importjsonimportrefromabcimportABC,abstractmethodfromdataclassesimportdataclass,fieldfromtypingimportList,Literal,Optional,Tuple,Unionfrom.data_utilsimportSLOTSfrom.tool_utilsimportDefaultToolUtils,GLM4ToolUtils@dataclass......
  • llamafactory/model/loader.py [源码解析]
    classTokenizerModule(TypedDict):tokenizer:"PreTrainedTokenizer"processor:Optional["ProcessorMixin"]def_get_init_kwargs(model_args:"ModelArguments")->Dict[str,Any]:r"""Getsargu......
  • Java垃圾收集器选择与优化策略
    1.垃圾收集算法有哪些,可以聊一下吗?如何确定一个对象是垃圾?要想进行垃圾回收,得先知道什么样的对象是垃圾。1.1引用计数法对于某个对象而言,只要应用程序中持有该对象的引用,就说明该对象不是垃圾。如果一个对象没有任何指针对其引用,它就是垃圾。弊端:如果A和B相互持有引......
  • Java卷上天,可以转行干什么?
    小刚是某名企里的一位有5年经验的高级Java开发工程师,每天沉重的的工作让他疲惫不堪,让他萌生出想换工作的心理,但是转行其他工作他又不清楚该找什么样的工作因为JAVA这几年的更新实在是太太太……快了,JAVA8都还没用多久,16都已经发布了。自从JAVA8发布了Lambda和Stream......
  • Java卷上天,可以转行干什么?
    小刚是某名企里的一位有5年经验的高级Java开发工程师,每天沉重的的工作让他疲惫不堪,让他萌生出想换工作的心理,但是转行其他工作他又不清楚该找什么样的工作因为JAVA这几年的更新实在是太太太……快了,JAVA8都还没用多久,16都已经发布了。自从JAVA8发布了Lambda和Stream......
  • Java面向对象
    编号基本数据类型包装类型1byteByte2shortShort3charCharacter4intInteger5longLonLong6floatFloat7doubleDouble8booleanBoolean1.基本类型的包装类拆包–>封包拆包–>包装类型转换基本数据类型封包—>基本数据类型转换包装类型2. Calendar 类Calendar 类用于操作日......
  • 如何在已有内网网络中增加项目专用域名解析服务器(DNS)
    需求背景如下:某项目有一系列多个BS软件平台是在与互联网完全隔离的内部网络中运行的,现在需要使用已有的域名hello.com(示例)在内网中用作各平台的访问(二级域名),此域名已购买SSL证书(*.hello.com)。现有的内网网络环境中已经有一台DNS服务器了,网络中的电脑也都设置了使用此DNS服务器A......
  • Python 文件操作与管理:Open函数、Json与Pickle、Os模块
    1.open函数的使用Python中的open()函数是处理文件的标准方法。它允许你打开一个文件,并对其进行读取、写入或追加操作open(file,mode,encoding)函数的格式:file:文件路径mode:打开方式(读:r写:w读完之后光标停留在最后读取的位置......
  • 2022CSP答案+解析(附题目)
    一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)1.以下哪种功能没有涉及C++语言的面向对象特性支持:()。A.C++中调用printf函数B.C++中调用用户定义的类成员函数C.C++中构造一个class或structD.C++中构造来源于同一基类的多个派生类答......
  • Vue2中Diff算法解析
    Vue2中Diff算法解析import{compileToFunction}from'./compiler/index.js';import{patch,createElm}from'./vdom/patch';//1.创建第一个虚拟节点letvm1=newVue({data:{name:'hs'}});letrender1=compileToFunction('<div>{{nam......