Java解析json数据(fastjson2)
Json数据
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它以易于阅读和编写的方式来表示结构化数据,常用于在不同系统之间进行数据交互和传输。
JSON使用键值对的方式来组织数据,具有以下几个特点:
- 具有简洁的语法:JSON使用了人类可读的文本格式,易于理解和编写。
- 支持多种数据类型:JSON支持字符串、数值、布尔值、数组、对象等多种数据类型。
- 基于键值对的数据结构:JSON中的数据由键值对组成,键是字符串,值可以是字符串、数值、布尔值、数组或嵌套的JSON对象。
- 平台无关性:JSON是独立于编程语言和操作系统的,可以在不同的平台和环境中使用和解析。
{
"name":"John",
"age":30,
"city":"New York",
"is_student":false,
"hobbies":["reading","traveling","gardening"],
"area":
{
"province" : "XXX",
"city" : "XXX",
"district" : "XXX"
}
}
参考上面的例子,"name":"John"
这样的就是普通的字符串数据类型,而hobbies
就是对应的数组格式了,area
对应的是对象格式。数组里面是可以嵌套对象和其他数据格式的,也就是说json非常灵活,我们在获取其数据的时候,不同的数据类型要用不同的获取方式。
代码(遍历)
package com.ruoyi.qcc;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
/**
* @BelongsProject: ruoyi
* @BelongsPackage: com.ruoyi.qcc
* @Author: chuanwei.yang 42624
* @CreateTime: 2023-06-27 21:03
* @Description: TODO
* @Version: 1.0
*/
public class JsonTraversalExample {
public static void main(String[] args) {
String jsonStr = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\", \"pets\":[\"dog\",\"cat\"]}";
// 获取一个JSONObject对象
JSONObject json = JSON.parseObject(jsonStr);
// 调用遍历方法
traverseJson(json);
}
public static void traverseJson(JSONObject json) {
// 获取所有的 key 值
for (String key : json.keySet()) {
// get 方法获取 value
Object value = json.get(key);
System.out.println("Key: " + key + ", Value: " + value.toString());
// 如果value值是一个数组,则使用JSONArray接收,然后遍历。
if (value instanceof JSONArray) {
// 强转 JSONArray
JSONArray array = (JSONArray) value;
for (int i = 0; i < array.size(); i++) {
System.out.println("Array Element: " + array.getString(i));
}
}
}
}
}
上面的代码提供了一种遍历的方法。更多的时候,我们需要按需取里面的数据,所以下面的方法可能会更实用一点。
代码(取值)
// 解析 JSON
// jsonString 对应需要被解析的json数据变量
JSONObject jsonObject = JSON.parseObject(jsonString);
// 获取其中 key 值为 Result 的 value 值
JSONObject parentJson = jsonObject.getJSONObject("Result");
// 如果 Industry 的 value 是一个数组 要使用 JSONArray 来获取
JSONArray originalNameJsonArray = parentJson.getJSONArray("Industry");
// jsonArray 可以直接转换为 java 的 List 类型
List<JSONObject> originalNameJsonList = originalNameJsonArray.toList(JSONObject.class);
// 之后就可以遍历了
for (JSONObject jsonItem : originalNameJsonList) {
System.out.println(jsonItem);
}
// 获取某个值
// String EnglishName = resultJson.getString("EnglishName");
Java解析json数据(fastjson2)的更多相关文章
- Introduction to Structured Data json的2种形式 JAVA解析JSON数据 - JsonArray JsonObject
https://developers.google.com/search/docs/guides/intro-structured-data Structured data refers to kin ...
- Java解析Json数据的两种方式
JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...
- java解析json数据
json数据一般分两种,对象和数组. json解析需要写异常处理. 解析json对象用的是JSONObject类,如 public void analys_jsonObject(String json ...
- Java 解析Json数据
Json格式字符串{success:0,errorMsg:"错误消息",data:{total:"总记录数",rows:[{id:"任务ID" ...
- java解析json数据用到的jar包
百度云连接: https://pan.baidu.com/s/1iuQCc7uBO5XtAsNn6hwCew
- Java构造和解析Json数据的两种方法详解二
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...
- Java构造和解析Json数据的两种方法详解一
一.介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.js ...
- Java构造和解析Json数据的两种方法详解二——org.json
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...
- Java构造和解析Json数据的两种方法详解一——json-lib
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...
随机推荐
- ORA-12514问题解决
版本:11.2.0.1.0 - 64bit 本机安装Oracle后链接测试发现以下情况: sqlplus scott/tiger 正常登陆 sqlplus scott/tiger@orcl 登陆失败 ...
- SpringBoot中Redis的基础使用
基础使用 首先引入依赖 <!-- redis依赖--> <dependency> <groupId>org.springframework.boot</gro ...
- C语言变量和数据类型整理
03-变量和数据类型 3.1 大话C语言变量和数据类型 在<数据在内存中的存储>一节中讲到: ●计算机要处理的数据(诸如数字.文字.符号.图形.音频.视频等)是以二进制的形式存放在内存中的 ...
- 【Azure API 管理】在 Azure API 管理中使用 OAuth 2.0 授权和 Azure AD 保护 Web API 后端,在请求中携带Token访问后报401的错误
问题描述 在 Azure API 管理中使用 OAuth 2.0 授权和 Azure AD 保护 Web API 后端的文档中操作 "在开发人员门户中启用 OAuth 2.0 用户授权&qu ...
- debian手册摘要
apt-get source 包名 # 获取源码dpkg --info deb包名 # 查看包信息apt-cache show 包名 # 包信息(含有Depends.Suggests.Section. ...
- C++ auto与循环
C++ auto与循环 C++ auto 的介绍 typeid(p).name();可以输出auto的类型 auto 是 C++11 引入的一个关键字,用于自动类型推导.编译器会根据初始化表达式的类型 ...
- vue3自定义Hooks
比较简单的小demo,直接上代码吧 ts使用defineComponent,setup()里面使用 Composition API 写法,逻辑块清晰,不用前后文查找,拒绝 spaghetti code ...
- html5与css3新特性
HTML5新特性 增加了一些新的标签.新的表单以及新的表单属性等 这些新特性都有兼容性问题,基本上IE9+以上版本浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特性 新增语义化标签 - < ...
- RocketMQ为什么这么快?我从源码中扒出了10大原因!
大家好,我是三友~~ RocketMQ作为阿里开源的消息中间件,深受广大开发者的喜爱 而这其中一个很重要原因就是,它处理消息和拉取消息的速度非常快 那么,问题来了,RocketMQ为什么这么快呢? 接 ...
- SelectZenEmpty 下拉框 支持 最大长度 超出... vue 组件
<template> <Select v-model="innerValue" :disabled="disabled" :clearable ...