Json数据报文解析-Gson库-JsonObject类-JsonParse类-JsonArray类

一、前言

本文我们将介绍如何解析Json数据,主要通过Gson库中的相关类来实现。

二、详细步骤

首先,我们要拿到一个基础的Json数据,这里将以下面的Json数据作为示例:

复制代码
{
    "code":"1",
    "msg":"ok",
    "data":{
        "status":"run",
        "runtime":36600
    }
}

解析Json数据,我们要先创建JsonParser对象,然后执行该对象的parse方法,并将返回值赋给JsonObject对象。

此时jsonobject即是json解析后的对象,我们可以通过get函数获取到文本型的值,比如获取code值。

当然,我们也可以将获取到的值转换成int等类型返回,如下图所示。

若要获取类如上述json字符串中的data的jsonobject,则需要用getAsJsonObject()函数进行转换。

转换后,取值方法和上一个相同。

对于如下所示的json文本格式,我们需要用JsonArray来解析出JsonObject.

java 复制代码
{
    "data":[
        {
            "code":0,
            "status":"run"
        },
        {    
            "code":1,
            "status":"wait"
        }
    ]
}

先按照上述方法解析出JsonObject对象,然后调用该对象的getAsJsonArray()方法返回JsonArray对象,然后调用JsonArray对象的get(int index).toString()方法,将嵌套在里边的Json文本取出,再按正常步骤解析即可。

本文所用代码如下:

java 复制代码
import com.google.gson.*;

public class Main {

    public static void main(String[] args) {
        String json="{\n" +
                "    \"code\":\"1\",\n" +
                "    \"msg\":\"ok\",\n" +
                "    \"data\":{\n" +
                "        \"status\":\"run\",\n" +
                "        \"runtime\":36600\n" +
                "    }\n" +
                "}";

        JsonParser jsonParser=new JsonParser();
        JsonObject jsonObject= (JsonObject) jsonParser.parse(json);
        //解析第一层的json数据
        System.out.printf(jsonObject.get("code").toString());
        System.out.println(jsonObject.get("code").getAsInt());

        //获取第二层的JsonObject
        jsonObject=jsonObject.getAsJsonObject("data");

        //解析第二层的数据
        System.out.println(jsonObject.get("status"));

        String data2="{\n" +
                "    \"data\":[\n" +
                "        {\n" +
                "            \"code\":0,\n" +
                "            \"status\":\"run\"\n" +
                "        },\n" +
                "        {    \n" +
                "            \"code\":1,\n" +
                "            \"status\":\"wait\"\n" +
                "        }\n" +
                "    ]\n" +
                "}";

        JsonParser jsonParser2=new JsonParser();
        JsonObject jsonObject2= (JsonObject) jsonParser2.parse(data2);
        JsonArray jsonArray=jsonObject2.getAsJsonArray("data");

        jsonObject2= (JsonObject) jsonParser2.parse(jsonArray.get(1).toString());
        System.out.printf(jsonObject2.get("status").getAsString());
    }
}

全部代码执行结果如下:

相关推荐
2603_965148114 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
鬼手点金18 小时前
Scrapy + Playwright 完整示例(JS 动态渲染网页)
开发语言·javascript·爬虫·python·scrapy·html·json
AlfredZhao19 小时前
VS Code 一键美化 JSON:不用安装插件
json
zhanghaha13141 天前
Python进阶教程:6_JSON 数据解析 —— 新手完全指南
开发语言·python·json
云水一下1 天前
零基础玩转bWAPP靶场(四十六):XSS - Reflected (AJAX/JSON)
web安全·ajax·json·xss·bwapp·reflected
小小龙学IT2 天前
simdjson:利用 SIMD 指令实现 GB/s 级 JSON 解析的 C++ 开源库
开发语言·c++·json
天吾cc2 天前
JSON 与 cJSON 学习笔记
笔记·学习·json
大家的林语冰2 天前
👍 JS 还在进化,ES2026 正式推出,最新七大特性补全!
前端·javascript·json
秋田君2 天前
QT_JSON文件操作
开发语言·qt·json
k4m7v2pz2 天前
Rust 规则热重载实战:用 serde_json + notify 告别重启
开发语言·rust·json·规则引擎·notify·热重载