Java如何快速读取&解析JSON数据(文件),获取想要的内容?

这篇具有很好参考价值的文章主要介绍了Java如何快速读取&解析JSON数据(文件),获取想要的内容?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

手打不易,如果转摘,请注明出处!

注明原文:https://zhangxiaofan.blog.csdn.net/article/details/132764186


目录

前言

准备工作

Json数据(示例)

解析Json文件

第一步:创建一个空类

第二步:使用 Gsonformat 插件

 第三步:复制Json内容,创建对应类

第四步:读取Json文件,提取目标数据

总结


前言

工作做,有时候会碰到一些复杂的Json格式数据(复杂的数据一般都是json.file文件),大部分字段可能对我们没有用,因此我们需要去主动格式化,只提取或者过滤我们想要的数据。

准备工作

开发工具:intellij idea

插件:Gsonformat

下载地址如下:

Gsonformat - IntelliJ IDEs Plugin | Marketplace

直接在idea,通过 Plugins 安装即可。

maven 依赖

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>

Json数据(示例)

Json文件数据示例:

文件路径

src/main/resources/jsonfile/test.json

java 读取json文件解析,json

文件名: test.json

文件内容

{
  "code": 200,
  "msg": "成功",
  "data": [
    {
      "id": 1,
      "version": "2",
      "schoolList": [
        {
          "id": 1,
          "name": "岭南一中",
          "studentList": [
            {
              "name": "zhangxiaofan",
              "age": 15
            },
            {
              "name": "wangwu",
              "age": 16
            }
          ]
        },
        {
          "id": 2,
          "name": "实验中学",
          "studentList": [
            {
              "name": "lisi",
              "age": 16
            },
            {
              "name": "zhaoliu",
              "age": 15
            }
          ]
        }
      ],
      "flag": true
    }
  ]
}

解析Json文件

第一步:创建一个空类

public class MyJsonObject {
    
    
}

第二步:使用 Gsonformat 插件

空白处点击右键,选择 Generator ,然后选择 

java 读取json文件解析,json

 第三步:复制Json内容,创建对应类

java 读取json文件解析,json

注意:我们不需要把整个Json内容复制进去,数据量很大的情况下,会卡死。

例如:我们要解析的Json格式含有很多List对象,那么我们只需拷贝List中的一个单元数据(Object)即可,因为格式是固定的。例如我们只需拷贝下面的内容来创建bean就行。

{
    "code": 200,
    "msg": "成功",
    "data": [{
        "id": 1,
        "version": "2",
        "schoolList": [{
            "id": 1,
            "name": "岭南一中",
            "studentList": [{
                "name": "zhangxiaofan",
                "age": 15
            }]
        }],
        "flag": true
    }]
}

点击确定后,会自动帮我们创建好对应的POJO类

@NoArgsConstructor
@Data
public class MyJsonObject {


    /**
     * code : 200
     * msg : 成功
     * data : [{"id":1,"version":"2","schoolList":[{"id":1,"name":"岭南一中","studentList":[{"name":"zhangxiaofan","age":15}]}],"flag":true}]
     */

    private int code;
    private String msg;
    private List<DataBean> data;

    @NoArgsConstructor
    @Data
    public static class DataBean {
        /**
         * id : 1
         * version : 2
         * schoolList : [{"id":1,"name":"岭南一中","studentList":[{"name":"zhangxiaofan","age":15}]}]
         * flag : true
         */

        private int id;
        private String version;
        private boolean flag;
        private List<SchoolListBean> schoolList;

        @NoArgsConstructor
        @Data
        public static class SchoolListBean {
            /**
             * id : 1
             * name : 岭南一中
             * studentList : [{"name":"zhangxiaofan","age":15}]
             */

            private int id;
            private String name;
            private List<StudentListBean> studentList;

            @NoArgsConstructor
            @Data
            public static class StudentListBean {
                /**
                 * name : zhangxiaofan
                 * age : 15
                 */

                private String name;
                private int age;
            }
        }
    }
}

第四步:读取Json文件,提取目标数据

假设我们想知道每个学校,有哪些学生(姓名)。

import com.alibaba.fastjson.JSONObject;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Test {

    public static final String JSON_PATH = "E:\\JavaProject\\local\\JavaCoreTest\\src\\main\\resources\\jsonfile\\test.json";

    public static void main(String[] args) throws IOException {
        Set<String> url = new HashSet<>();
        List<String> urlArray = new ArrayList<>();
        File file = new File(JSON_PATH);
        String content = FileUtils.readFileToString(file, "UTF-8");
        MyJsonObject myJsonObject = JSONObject.parseObject(content, MyJsonObject.class);
        // 数据
        List<MyJsonObject.DataBean> data = myJsonObject.getData();
        for (MyJsonObject.DataBean dataBean : data) {
            for (MyJsonObject.DataBean.SchoolListBean school : dataBean.getSchoolList()) {
                // 学校名
                String schoolName = school.getName();
                for (MyJsonObject.DataBean.SchoolListBean.StudentListBean student : school.getStudentList()) {
                    // 学生姓名
                    String studentName = student.getName();
                    System.out.println("学校:" + schoolName + ",有学生:" + studentName);
                }

            }
        }
    }
}

执行结果:

Connected to the target VM, address: '127.0.0.1:35240', transport: 'socket'
学校:岭南一中,有学生:zhangxiaofan
学校:岭南一中,有学生:wangwu
学校:实验中学,有学生:lisi
学校:实验中学,有学生:zhaoliu

总结

按照上面的方法,我们可以快速的提取复杂的Json文件,快速获取我们想要的内容!

如果文件特别大,可以考虑多线程的方式处理。文章来源地址https://www.toymoban.com/news/detail-752354.html

到了这里,关于Java如何快速读取&解析JSON数据(文件),获取想要的内容?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PLC从HTTP服务端获取JSON文件,解析数据到寄存器

           智能网关IGT-DSER集成了多种PLC协议,方便实现各种PLC与HTTP服务端之间通讯。通过网关的参数配置软件绑定JSON文件的字段与PLC寄存器地址,配置URL,即可采用POST命令,将JSON文件提交给HTTP的服务端; 服务端有返回的JSON,或者GET命令获取到的JSON,网关进行解析后将数据

    2024年01月23日
    浏览(48)
  • 如何使用 Java 将 JSON 文件读取为字符串?这三种方法很管用!

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它可以用来存储和传输结构化的数据。在 Java 中,有多种方法可以将 JSON 文件读取为字符串,本文将介绍其中的几种。 java.io 包中提供了一些类,如 FileReader、BufferedReader、InputStreamReader 等,可以用来读取文件的内容。

    2024年02月01日
    浏览(89)
  • python 读取文件, 转化为 json 格式, 获取 json 中某个属性的值

    有以下文件 info.txt , 想要读取其中的 fileVideoId, 组成一个列表后返回. 运行结果:

    2024年02月09日
    浏览(45)
  • java获取到heapdump文件后,如何快速分析?

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明。 在之前的OOM问题复盘之后,本周,又一Java服务出现了内存问题,这次问题不严重,只会触发堆内存占用高报警,没有触发OOM,但好在之前的复盘中总结了dump脚本,会在堆占用高时自动执行js

    2023年04月21日
    浏览(31)
  • 递归解析Json,实现生成可视化Tree+快速获取JsonPath

    内部平台的一个小功能点的实现过程,分享给大家: 递归解析Json,可以实现生成可视化Tree+快速获取JsonPath 。 步骤: 1.利用JsonPath读取根,获取JsonObject 2.递归层次遍历JsonObjec,保存结点信息 3.利用zTree展示结点为可视化树,点击对应树的结点即可获取对应结点的JsonPath 示例

    2024年02月08日
    浏览(43)
  • .NET学习笔记----关于.NET Core那些事(3)【配置文件的读取、json文件的通用解析、读取静态文件】

    appsettings.json准备 控制器中读取json 定义与配置文件中需要获取的标签结构完全一致的实体类:IConfiguration .Bind() ----反序列化 要读取的json字符串 定义的实体类 读取json 用到的json字符串 == 用到的类 Startup.cs中的配置 控制器中的代码 运行结果 当我们用《关于.NET Core那些事(2)》

    2024年02月04日
    浏览(43)
  • 【Unity】C# 创建/读取/解析JSON数据

    判断是否存在JSON数据文件没有则创建并保存

    2024年02月16日
    浏览(70)
  • Python中如何快速解析JSON对象数组

    由于浏览器可以迅速地解析JSON对象,它们有助于在客户端和服务器之间传输数据。本文将描述如何使用Python的JSON模块来传输和接收JSON数据。 JSON (JavaScript Object Notation)是一种用于数据交换的语法,它对人的读写很简单,对计算机的解析和生产也很简单,而且还可以存储数据。

    2024年02月10日
    浏览(50)
  • java— 读取JSON文件的多种方式

    大部分内容参考自: https://blog.csdn.net/csdn_halon/article/details/120287992 在开发过程中有时会遇到需要读取本地.json文件的需求,通常会自己写Reader代码去读,但是这么做写出来的代码有些繁琐(需要关流、创建StringBuilder对象等操作)。最近发现几个小工具可以让需求代码变得更加

    2024年02月11日
    浏览(54)
  • VUE3如何读取本地json文件

    首先需要安装axios npm install axios --save 然后在main.js引用axios 然后就可以使用$axios了,可是vue3没有this,所以需要用getCurrentInstance() 获取当前组件实例。 在app.vue里使用get请求数据 当然,VUE3也可以直接读取本地json文件

    2024年02月13日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包