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

2023-12-14 07:28

本文主要是介绍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.

{"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());//获取第二层的JsonObjectjsonObject=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());}
}

        全部代码执行结果如下:

这篇关于Json数据报文解析-Gson库-JsonObject类-JsonParse类-JsonArray类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/491653

相关文章

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法