IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 【Java解析多层嵌套的JSON】 -> 正文阅读

[开发工具]【Java解析多层嵌套的JSON】

Java解析多层嵌套的JSON

1. com.google.code.gson

1.1 引入依赖

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.0</version>
</dependency>

1.2 测试代码

  • 创建JSON解析器 JsonParser parse = new JsonParser();
  • 将String转成jsonObject JsonParser .parse(json).getAsJsonObject();
  • JsonObject.get(“”).getAsInt();
  • JsonObject.get(“”).getAsString();
  • JsonObject.get(“”).getAsJsonArray();
public static void gsonTest(String json){

    //创建JSON解析器
    JsonParser parse = new JsonParser();

    //将String转成jsonObject
    JsonObject jsonObject = parse.parse(json).getAsJsonObject();

    //error
    int error = jsonObject.get("error").getAsInt();
    System.out.println("error: " + error);

    //status
    String status = jsonObject.get("status").getAsString();
    System.out.println("status: " + status);

    //results
    JsonArray results = jsonObject.get("results").getAsJsonArray();
    for (int i = 0; i < results.size(); i++){
        JsonObject jsonObject1 = results.get(i).getAsJsonObject();

        //currentCity
        String currentCity = jsonObject1.get("currentCity").getAsString();
        System.out.println("currentCity" + "-" + i + ": " + currentCity);

        //index
        JsonArray indexes = jsonObject1.get("index").getAsJsonArray();
        for (int j = 0; j < indexes.size(); j++){
            JsonObject jsonObject2 = indexes.get(j).getAsJsonObject();

            //title
            String title = jsonObject2.get("title").getAsString();
            System.out.println("title" + "-" + (j + 1) + ": " + title);

            //zs
            String zs = jsonObject2.get("zs").getAsString();
            System.out.println("zs" + "-" + (j + 1) + ": " + zs);

        }
    }
}
/*
error: 0
status: success
currentCity-0: bj
title-1: 穿衣
zs-1: 较冷
title-2: 紫外线强度
zs-2: 中等
*/

2. net.sf.json.JSONObject

2.1 引入依赖

  • maven依赖如下
<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>// jdk8也适用
</dependency>

2.2 JSONArray

List 转 JSONArray

public static void main(String[] args) {
    ArrayList<Stu> list = new ArrayList<>();
    list.add(new Stu(2020,"张三"));
    list.add(new Stu(2021,"李四"));
    list.add(new Stu(2022,"王五"));
    JSONArray jSONArray = JSONArray.fromObject(list);
    System.out.println(list);
    System.out.println(jSONArray);

}
/*
[Stu(no=2020, name=张三), Stu(no=2021, name=李四), Stu(no=2022, name=王五)]      //list
[{"name":"张三","no":2020},{"name":"李四","no":2021},{"name":"王五","no":2022}]  //jSONArray
*/

2.3 测试代码

public static void jSONObjectTest(String json){

    JSONObject jsonObject = JSONObject.fromObject(json);

    //error
    int error = jsonObject.getInt("error");
    System.out.println("error: " + error);

    //status
    String status = jsonObject.getString("status");
    System.out.println("status: " + status);

    //results
    JSONArray results = jsonObject.getJSONArray("results");
    for (int i = 0; i < results.size(); i++) {

        //currentCity
        String currentCity = results.getJSONObject(i).getString("currentCity");
        System.out.println("currentCity: " + currentCity);
        //index
        JSONArray indexes = results.getJSONObject(i).getJSONArray("index");
        for (int j = 0; j < indexes.size(); j++) {

            //title
            String title = indexes.getJSONObject(j).getString("title");
            System.out.println("title" + "-" + (j + 1) + ": " + title);

            //zs
            String zs = indexes.getJSONObject(j).getString("zs");
            System.out.println("zs" + "-" + (j + 1) + ": " + zs);
        }
    }
}
/*
error: 0
status: success 
currentCity: bj
title-1: 穿衣
zs-1: 较冷
title-2: 紫外线强度
zs-2: 中等
*/

3. 测试 json

String json = "{\n" +
    "    \"error\": 0,\n" +
    "    \"status\": \"success\",\n" +
    "    \"results\": [\n" +
    "        {\n" +
    "            \"currentCity\": \"bj\",\n" +
    "            \"index\": [\n" +
    "                {\n" +
    "                    \"title\": \"穿衣\",\n" +
    "                    \"zs\": \"较冷\",\n" +
    "                    \"tipt\": \"穿衣指数\",\n" +
    "                    \"des\": \"建议着厚外套加毛衣等服装。\"\n" +
    "                },\n" +
    "                {\n" +
    "                    \"title\": \"紫外线强度\",\n" +
    "                    \"zs\": \"中等\",\n" +
    "                    \"tipt\": \"紫外线强度指数\",\n" +
    "                    \"des\": \"属中等强度紫外线辐射天气。\"\n" +
    "                }\n" +
    "            ]\n" +
    "\n" +
    "        }\n" +
    "    ]\n" +
    "}\n";
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:40:32  更:2022-05-05 11:44:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 6:21:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码