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

news2024/9/27 15:32:29

一、前言

        本文我们将介绍如何解析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.

{
    "data":[
        {
            "code":0,
            "status":"run"
        },
        {    
            "code":1,
            "status":"wait"
        }
    ]
}

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

        本文所用代码如下:


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());
    }
}

        全部代码执行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1310120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑监控软件丨老板的“管理神器”?员工的“噩梦伊始”?

不得不承认,老板们都很喜欢用电脑监控软件来管控员工的工作情况。但是面对这个话题,他们却又有不一样的感受。 老板的“管理神器”?——首先来说老板 不得不说,老板确实很喜欢用域之盾软件--电脑管控功能https://www.yuzhidun.cn…

mfc140u.dll丢失的解决方法的详细介绍,六种解决mfc140u.dll丢失的方法

今天的这篇文章将向各位分享一个有关电脑出现关于丢失mfc140u.dll错误的弹窗问题,这是一个很常见的问题。无论你是一名大学生还是其他身份,都可能会遇到这个问题。下面我会对mfc140u.dll丢失的解决方法进行详细的介绍。 一.六种解决mfc140u.dll丢失的方法…

浪潮信息大突破:全面开源1026亿参数模型源2.0

近日,浪潮信息发布了一项重大成就,宣布全面开源其1026亿参数的基础大模型——源2.0。该举措在AI产业界引起了广泛关注,被视为推动生成式人工智能产业快速发展的关键一步。 源2.0模型概览 源2.0是一个多参数级别的大模型,提供了1…

‘BLEUUID‘ does not name a type错误怎么解决?

摘要:arduino环境下对esp32蓝牙编程时会遇到BLEUUID does not name a type错误,本文介绍解决方法。 硬件设备是安信可ESP32-S模组。 错误发生在代码最开始的地方,include了一个蓝牙设备头文件,然后定义了UUID,注意看&a…

Conda 使用教程大全来啦

什么是 Conda? Conda 是一款功能强大的软件包管理器和环境管理器,您可以在 Windows 的 Anaconda 提示符或 macOS 或 Linux 的终端窗口中使用命令行命令 Conda 可以快速安装、运行和更新软件包及相关依赖项。Conda 可以在本地计算机上创建、保存、加载和…

人工智能改变医疗保健:人工智能如何革命医学

人工智能(Artificial Intelligence, 简称AI)的快速发展正逐渐改变着我们的生活方式和社会结构。在医疗保健领域,AI的应用不仅提供了更准确、高效的诊断和治疗手段,还为医生和患者之间的交流提供了新的途径。本文将探讨人工智能如何…

计算机组成原理-ATT格式vsIntel格式

文章目录 AT&T格式 vs lntel格式 x86汇编语言是lntel格式,还有一种汇编语言格式是AT&T AT&T格式 vs lntel格式 lntel格式中取主存地址内容未指明长度默认为32位,对应下图中第四行右边的指令 百分号 美元符号 小括号 可用于计算机结构体数组…

有意思!40小时工作制来了,996再见

​在中国,加班文化已经深入人心。工资越高加班越多,“996”已成为一些行业标签,月薪30k以上的职场人中超过86%经常加班。所以今天我就来说一下这40小时工作制到底是从何而来,感兴趣的往下看看吧! 40小时工…

2023自动化测试框架的设计原则你都知道吗?快来看!

1.代码规范 测试框架随着业务推进,必然会涉及代码的二次开发,所以代码编写应符合通用规范,代码命名符合业界标准,并且代码层次清晰。特别在大型项目、多人协作型项目中,如果代码没有良好的规范,那么整个框架…

安装LLaMA-Factory微调chatglm3,修改自我认知

安装git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda activate llama_factory cd LLaMA-Factory pip install -r requirements.txt 之后运行 单卡训练, CUDA_VISIBLE_DEVICES0 python src/train_web.py…

MagicAnimate:Temporally consistent human image animation using diffusion model

1.Introduction 本文研究了任务形象动画人物,旨在根据特定的运动序列生成一个具有特定参考身份的视频。现有的人物图像动画的数据驱动方法可以基于所使用的生成主干模型分为两类,1.基于GAN,通常使用变形函数将参考图变形为目标姿态&#xff0…

Linux-----6、文件操作管理

# 文件操作管理 重要:Linux下,一切皆文件!!! 说在前面: 接下来所有的命令需要在一个载体上执行,这个载体就叫做终端。 终端上所有命令都需要一个东西翻译解析一下,计算机才能理解…

同义词替换工具在论文降重中的应用 神码ai

大家好,今天来聊聊同义词替换工具在论文降重中的应用,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: 标题:同义词替换工具在论文降重中的应用 一、引言 在撰写论文时&#xff0c…

LeetCode力扣每日一题(Java):67、二进制求和

一、题目 二、解题思路 1、我的思路(残缺版) 好家伙,又是一道我盯着屏幕看了半天还没思路的题目 我只有一部分残缺的思路,在这里先写下来吧 我们可以先创建一个空字符串(后文称新字符串),用…

Linux-----5、文件系统

# 文件系统 # 终端的基本操作 ㈠ 打开多个终端 ㈡ 快速清屏 新建标签:command T 新建窗口:command N 关闭标签:command Q 关闭窗口:command W 放大:command 缩小:command - 清屏&#xff…

API绘画API:分分钟让你成为创作艺术家

引言 近几年,AI技术已经取得了显著的进步,尤其是在绘画领域。现在,通过使用API绘画API,普通人也可以像专业艺术家一样创作出令人惊叹的艺术作品。本文将向你介绍API绘画API的工作原理、如何使用它以及它对艺术创作的影响。 一、…

Java面向对象思想以及原理以及内存图解

文章目录 什么是面向对象面向对象和面向过程区别创建一个对象用什么运算符?面向对象实现伪代码面向对象三大特征类和对象的关系。 基础案例代码实现实例化创建car对象时car引用的内存图对象调用方法过程 成员变量和局部变量作用范围在内存中的位置 关于对象的引用关系简介相关…

js Intl.DateTimeFormat() 格式化时间利器

效果 案例 const options { year: numeric, month: 2-digit, day: 2-digit, hour: 2-digit, minute: 2-digit, second: 2-digit, hour12: false }; const now new Intl.DateTimeFormat(zh, options).format(new Date()).replace(/[/]/g,"-") console.log("当…

算法Day31 房间收纳

房间收纳 Description 对于零落的玩具,你需要进行收纳,为了将最多的玩具进行收纳,请你合理分配收纳柜和房间数量。 请你将一些玩具收纳在一个房间中,给你一个二维数组 roomTypes,其中的roomTypes[i] {numberOfBoxes_…

Java反射,枚举讲解

💕"理想者最可能疯狂。"💕 作者:Mylvzi 文章主要内容:Java反射,枚举讲解 "💕 作者:Mylvzi 文章主要内容:数据结构之Map/Set讲解硬核源码剖析 一.反射 1.概念 …