在Java中读取和解析JSON文件的示例代码
作者:蟹蟹蟹风流
我们在日常开发中少不了和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 Gson
或Jackson
- 轻量级工具:
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 | 依赖少/简单场景适用 | 功能有限/性能一般 |
Gson | Google官方支持/类型安全 | 学习曲线较陡 |
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文件的资料请关注脚本之家其它相关文章!