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)的更多相关文章

  1. 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 ...

  2. Java解析Json数据的两种方式

    JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...

  3. java解析json数据

    json数据一般分两种,对象和数组. json解析需要写异常处理. 解析json对象用的是JSONObject类,如 public void analys_jsonObject(String json ...

  4. Java 解析Json数据

    Json格式字符串{success:0,errorMsg:"错误消息",data:{total:"总记录数",rows:[{id:"任务ID" ...

  5. java解析json数据用到的jar包

    百度云连接: https://pan.baidu.com/s/1iuQCc7uBO5XtAsNn6hwCew

  6. Java构造和解析Json数据的两种方法详解二

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...

  7. Java构造和解析Json数据的两种方法详解一

    一.介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.js ...

  8. Java构造和解析Json数据的两种方法详解二——org.json

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...

  9. Java构造和解析Json数据的两种方法详解一——json-lib

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...

  10. 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

    1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...

随机推荐

  1. Spring Boot学生信息管理系统项目实战-2.字典管理和模板管理

    1.获取源码 源码是捐赠方式获取,详细请QQ联系我 :) 2.实现效果 3.项目源码 只挑重点讲,详细请看源码. 3.1 字典管理 字典管理这里分为字典的编码和名称和字典数据的增删改查. 前端页面: ...

  2. java 打包jar文件实战

    本文只介绍实用步骤,预备知识请自查阅: 参考资料: http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html http://w ...

  3. spring boot 2.0集成并使用redis

    项目地址:https://gitee.com/indexman/spring_boot_in_action 前面一章介绍了spring boot自带的缓存,下面讲一下如何在2.0版本中集成并使用red ...

  4. Spring boot 2.0启动自动执行sql语句

    项目地址:https://gitee.com/indexman/spring_boot_in_action 1.准备sql文件 将department.sql放到resources路径下 /* Nav ...

  5. 【Android逆向】反调试绕过(nop 绕过)

    1. 这是看雪上的一个题目,要求显示出 it is success https://www.kanxue.com/work-task_read-800648.htm 第三题 2. apk 安装到手机, ...

  6. Vulnhub内网渗透DC-6靶场通关

    个人博客 xzajyjs.cn IP DC-6: 192.168.168.4 Kali: 192.168.168.5 信息搜集 arp-scan -l # nmap -sn 192.168.168.0 ...

  7. Alpine安装gcc g++ make编译环境

    apk add gcc g++ make cmake gfortran libffi-dev openssl-dev libtool

  8. 【LeetCode哈希表#2】两个数组的交集(Set+数组)

    两个数组的交集 力扣题目链接(opens new window) 题意:给定两个数组,编写一个函数来计算它们的交集. 说明: 输出结果中的每个元素一定是唯一的. 我们可以不考虑输出结果的顺序. 思路 ...

  9. iOS使用Unity容器动态加载3D模型

    项目背景 我们的APP是一个数字藏品平台,里面的很多藏品需要展示3D模型,3D模型里面可能会包含场景,动画,交互.而对应3D场景来说,考虑到要同时支持iOS端,安卓端,Unity是个天然的优秀方案. ...

  10. “田由甲” - Kafka重复消费线上问题暴雷

    Kafka作为一款高性能.分布式的消息队列系统,在大数据领域被广泛应用.然而,在使用Kafka时,重复消费问题是一个常见的挑战,可能会对系统的数据一致性和业务逻辑造成影响.我知道Kafka这个名词时还 ...