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: ...
随机推荐
- Eclipse文本编码格式修改为UTF-8 的方法
整理自网络,亲测可用,记录一下,方便下次查. 一般Java文件编码格式是UTF-8的.以下以默认GBK改为UTF-8为例. 1.改变整个工作空间的编码格式,这样以后新建的文件也是新设置的编码格式. e ...
- SIP协议解析
起始行(start-line) INVITE sip:34020000001320000001@202.102.11.27:35611 SIP/2.0 请求消息的起始行包括三个参数,格式:Reques ...
- BUUCTF [强网杯 2019]随便注 1
1. 拿到题目,先输入一个1'试一下是否存在注入点 报错 error 1064 : You have an error in your SQL syntax; check the manual tha ...
- crontab采坑总结
目录 crontab环境变量 脚本缺少执行权限 crontab是Linux平台实现定时任务的服务工具,通常情况下该服务会预装在发行版中,直接使用即可. 关于crontab的详细用法参考:https:/ ...
- https://editor.csdn.net/md/?articleId=131348876
前言 前面搭建了基础环境,在使用统信UOS系统的相关行业也是不能上网的,但是可以传递压缩包,为了很好的方便相关从业人员工作,特将此种方式流程分享出来.(与国产银河麒麟不同) 本篇文章的重点就是离 ...
- Django之第三方平台QQ授权登录的实现
接入指南:https://wiki.connect.qq.com/成为开发者 准备工作 成为开发者 首先要有一个开发者账号,https://connect.qq.com/ 登录后点击用户头像,修改个人 ...
- 【LeetCode数组#2双指针法】移除元素、删除有序数组中的重复项、移动0
移除元素 力扣27题目链接(opens new window) 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组 ...
- Spring使用注解方式进行事务管理
目录 使用步骤: 步骤一.在spring配置文件中引入tx:命名空间 步骤二.具有@Transactional 注解的bean自动配置为声明式事务支持 步骤三.在接口或类的声明处 ,写一个@Trans ...
- 【Azure 应用服务】Azure Function Python函数部署到Azure后遇见 Value cannot be null. (Parameter 'receiverConnectionString') 错误
问题描述 使用VS Code创建Python Function,处理Event Hub中的数据.当部署到Azure Function App后,函数无法执行,查看 Function 日志出现 Valu ...
- 5. JVM虚拟机栈
1.概述 说到jvm 其中让人印象最深的就是栈和堆,也是 jvm中占用内存最大的两个地方. 从宏观上来看栈是运行时的单位,而堆是存储的单位 ,栈解决程序的运行问题,即程序如何执行,或者说如何处理数据. ...