首页 > 编程语言 >Java解析json数据(fastjson2)

Java解析json数据(fastjson2)

时间:2023-06-30 09:57:20浏览次数:45  
标签:fastjson2 Java JSONArray JSONObject JSON value json

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");

标签:fastjson2,Java,JSONArray,JSONObject,JSON,value,json
From: https://www.cnblogs.com/rainbow-1/p/17515793.html

相关文章

  • Java线程实现方式
    在Java中,可以通过以下几种方式实现线程:继承Thread类:可以创建一个继承自Thread类的子类,并重写run()方法,在run()方法中定义线程的执行逻辑。然后通过创建该子类的实例,并调用start()方法来启动线程。publicclassMyThreadextendsThread{@Overridepublicvoidrun()......
  • Java微服务
    微服务技术服务架构的发展单体架构:将所有的功能都集成在一个项目里面开发,打成一个包部署优点:架构简单,部署成本低缺点:耦合度高分布式架构:根据业务功能对系统进行拆分,将每个业务模块作为独立项目开发,称为一个服务优点:降低服务耦合度,利于服务的升级和扩展微服务是一种经过良好......
  • Java 设计模式实战系列—工厂模式
    在Java开发中,对象的创建是一个常见的场景,如果对象的创建和使用都写在一起,代码的耦合度高,也不利于后期的维护。我们可以使用工厂模式来解决这个问题,工厂模式是一个创建型模式,将对象的创建和使用分离开来,降低代码的耦合度,提高程序的可维护性和扩展性。工厂模式应用场景调用方......
  • Java标识符和关键字
    关键字关键字关键字关键字关键字abstractassertbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseenumextendsfinalfinallyfloatforgotoifimplementsimportinstanceofintinterfacelongnativenewpackag......
  • Java基础
    Java基础1.注释、标识符、关键字1.单行//2.多行/**/3.文档注释JavaDoc/***/4.标识符_关键词不可以作为变量名5.标识符_只能以字母\$\_开头6.变量名是大小写敏感的2.数据类型1.强类型语言_变量的使用严格符合规定(安全性高)2.基本类型......
  • Java异常2
    Java异常2如果try没有遇到问题,怎么执行?会把try里面所有代码执行完毕,不会执行catch()里面的内容.publicclassMain7{publicstaticvoidmain(String[]args){intarr[]={1,2,3,4,5,6};try{System.out.println(arr[0]);......
  • java反序列化漏洞原理
    1.首先是序列化的过程序列化:ObjectOutputStream类-->writeObject()将对象进行序列化,把字节序列写到一个目标输出流中.ser2.反序列化反序列化:ObjectInputStream类-->readObject()从一个源输入流中读取字节序列,再把它们反序列化为一个对象 如果序列化字节序列内容......
  • Java基础-Day06
    Java基础-Day06多维数组如何理解二维数组?数组属于引用数据类型数组的元素也可以是引用数据类型一个一维数组A的元素如果还是一个一维数组类型的,则次数组称为二维数组二维数组的属性:int[][]arr3=newint[][]{{1,2,3,4},{4,5,6,7,8},{9,10}};Syste......
  • 亚马逊国际获得AMAZON商品详情API接口采集sku商品规格信息列表Java调用演示案例
    ​亚马逊商品详情API接口的作用是获取Lazada电商平台上的某一商品的详情信息,包括商品的名称、销售价格、库存数量、图片、商品描述、品牌、产地、售后保障等信息。开发者可以使用该API接口获取到商品的原始数据,进行分析、筛选等操作。通过该接口获取到的商品详情数据可以结合其......
  • C# 序列化大小写 序列化对象为大小写 JsonConvert.SerializeObject
    关于C#序列化Json对象框架:.Net插件:Newtonsoft.Json最近有人问我序列化对象还区分大小写?我当时心想我都是通过Bejson格式化然后转换为C#类然后直接复制。没有关心过序列化成什么大小写。因为这样的话可以保持一致。直到有人问我才自己研究了一下。如下:usingNewtonsoft.......