在Java中读取和解析JSON文件的示例代码

 更新时间:2025年06月08日 10:30:29   作者:蟹蟹蟹风流  
我们在日常开发中少不了和JSON数据打交道,JSON是轻量、结构化的数据交换格式,支持跨语言,本文给大家详细介绍了如何在 Java 中读取和解析 JSON 文件,并有详细的代码示例供大家参考,需要的朋友可以参考下

JSON基础概念

JSON(JavaScript Object Notation)是一种轻量级数据交换格式,具有以下核心特征:

  • ​简洁性​​:纯文本格式,易于阅读和编写
  • ​跨语言​​:支持Java/Python/JavaScript等所有主流语言
  • ​高效性​​:比XML减少60%的数据体积
  • ​结构化​​:天然支持对象和数组的嵌套表达

​基本语法规范​

{
  "name": "张三",        // 字符串类型
  "age": 28,            // 数字类型
  "isStudent": false,   // 布尔类型
  "courses": [          // 数组类型
    "Math",
    "Physics"
  ],
  "details": {          // 对象类型
    "address": "北京",
    "email": "zhangsan@example.com"
  }
}

Java 中处理 JSON 方案

主流实现方式分为三类:

  • ​原生解析​​:使用JDK内置的org.json包(需 JDK 9+
  • ​第三方库​​:推荐使用 Google GsonJackson
  • ​轻量级工具​​:json-simple(适合简单场景)

json-simple 库实战

​步骤1:添加依赖​

<!-- Maven配置 -->
<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

​步骤2:创建 JSON 对象​

import org.json.simple.JSONObject;

public class JsonCreator {
    public static void main(String[] args) {
        JSONObject person = new JSONObject();
        person.put("name", "李四");
        person.put("age", 30);
        person.put("married", false);
        
        System.out.println(person.toJSONString());
        // 输出:{"name":"李四","age":30,"married":false}
    }
}

​步骤3:解析JSON文件​

import org.json.simple.parser.JSONParser;
import org.json.simple.JSONObject;
import java.io.FileReader;

public class JsonReader {
    public static void main(String[] args) {
        JSONParser parser = new JSONParser();
        
        try (FileReader reader = new FileReader("data.json")) {
            JSONObject jsonObject = (JSONObject) parser.parse(reader);
            
            String name = (String) jsonObject.get("name");
            long age = (Long) jsonObject.get("age");
            System.out.println("姓名:" + name);
            System.out.println("年龄:" + age);
            
            // 解析嵌套数组
            JSONArray courses = (JSONArray) jsonObject.get("courses");
            System.out.println("课程列表:");
            for (Object course : courses) {
                System.out.println("\t- " + course);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

高级解析技巧

​1. 处理复杂嵌套结构​

// 假设JSON结构:
// {
//   "students": [
//     {"name": "王五", "score": 85},
//     {"name": "赵六", "score": 92}
//   ]
// }

JSONArray students = (JSONArray) jsonObject.get("students");
for (Object obj : students) {
    JSONObject student = (JSONObject) obj;
    System.out.println("学生:" + student.get("name") + ",成绩:" + student.get("score"));
}

​2. 类型安全访问​

long safeAge = jsonObject.containsKey("age") 
    ? (Long) jsonObject.get("age") 
    : 0L; // 默认值处理

​3. 文件写入操作​

try (FileWriter file = new FileWriter("output.json")) {
    file.write(jsonObject.toJSONString());
    System.out.println("数据已保存到output.json");
} catch (IOException e) {
    e.printStackTrace();
}

技术选型对比

方案优点缺点
json-simple依赖少/简单场景适用功能有限/性能一般
GsonGoogle官方支持/类型安全学习曲线较陡
Jackson工业级性能/生态完善配置复杂度较高

最佳实践建议

  • ​性能敏感场景​​:优先使用Jackson(基准测试显示其解析速度比Gson快30%)
  • ​微服务架构​​:结合Spring Boot的@RequestBody自动绑定功能
  • ​数据校验​​:使用Hibernate Validator实现Bean Validation
  • ​异常处理​​:统一捕获ParseException并返回标准错误码
// Spring Boot控制器示例
@RestController
public class UserController {
    @PostMapping("/users")
    public ResponseEntity<?> createUser(@Valid @RequestBody UserDto user) {
        // 自动将JSON转换为UserDto对象
        userService.save(user);
        return ResponseEntity.ok("用户创建成功");
    }
}

通过掌握JSON处理技术,可以有效提升系统的数据交互能力,为构建 RESTful API 和微服务架构奠定坚实基础。建议根据项目需求选择合适的解析方案,并注重异常处理和性能优化。

以上就是在Java中读取和解析JSON文件的示例代码的详细内容,更多关于Java读取和解析JSON文件的资料请关注脚本之家其它相关文章!

相关文章

  • Java8简单了解Lambda表达式与函数式接口

    Java8简单了解Lambda表达式与函数式接口

    这篇文章主要介绍了Java8简单了解Lambda表达式与函数式接口,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot中文件下载与JSON响应冲突的深度解析与解决方案

    SpringBoot中文件下载与JSON响应冲突的深度解析与解决方案

    在Spring Boot开发中,我们经常遇到需要同时处理文件下载和JSON响应的场景,很多开发者会遇到这样一个困惑:明明已经正确配置了文件下载,但浏览器要么无法下载文件,要么返回的JSON数据混乱,本文将深入分析这个问题的本质,并提供多种优雅的解决方案
    2026-03-03
  • springBoot项目配置文件加载优先级及同配置覆盖问题详解

    springBoot项目配置文件加载优先级及同配置覆盖问题详解

    SpringBoot配置⽂件可以放置在多种路径下,不同路径下的配置优先级有所不同,下面这篇文章主要给大家介绍了关于springBoot项目配置文件加载优先级及同配置覆盖问题的相关资料,需要的朋友可以参考下
    2023-05-05
  • SpringBoot整合微信登录功能的实现方案

    SpringBoot整合微信登录功能的实现方案

    今天通过本文给大家分享微信登录与SpringBoot整合过程,微信扫描登录实现代码知道扫描后点击登录的全部过程,本文给大家介绍的非常详细,需要的朋友可以参考下
    2021-10-10
  • 使用springMVC所需要的pom配置

    使用springMVC所需要的pom配置

    这篇文章主要介绍了使用springMVC所需要的pom配置,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • SpringBoot限制接口访问频率避坑

    SpringBoot限制接口访问频率避坑

    这篇文章主要为大家介绍了SpringBoot限制接口访问频率避坑,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Java编程接口调用的作用及代码分享

    Java编程接口调用的作用及代码分享

    这篇文章主要介绍了Java编程接口调用的作用及代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java实现餐厅点餐系统的实例代码

    Java实现餐厅点餐系统的实例代码

    这篇文章主要介绍了Java实现餐厅点餐系统,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Java多线程4种拒绝策略小结

    Java多线程4种拒绝策略小结

    当线程池中的任务队列已满且无法再接受新的任务时,就需要采取拒绝策略来处理这种情况,本文主要介绍了Java多线程拒绝策略,包含了四种常见的拒绝策略,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 在 Spring Boot 中集成 MinIO 对象存储

    在 Spring Boot 中集成 MinIO 对象存储

    MinIO 是一个开源的对象存储服务器,专注于高性能、分布式和兼容S3 API的存储解决方案,本文将介绍如何在 Spring Boot 应用程序中集成 MinIO,以便您可以轻松地将对象存储集成到您的应用中,需要的朋友可以参考下
    2023-09-09

最新评论