JSON基础概念
JSON(JavaScript Object Notation)是一种轻量级数据交换格式,具有以下核心特征:
- 简洁性:纯文本格式,易于阅读和编写
- 跨语言:支持Java/Python/JavaScript等所有主流语言
- 高效性:比XML减少60%的数据体积
- 结构化:天然支持对象和数组的嵌套表达
基本语法规范
json
{
"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:添加依赖
java
<!-- Maven配置 -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
步骤2:创建 JSON 对象
java
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文件
java
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. 处理复杂嵌套结构
java
// 假设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. 类型安全访问
java
long safeAge = jsonObject.containsKey("age")
? (Long) jsonObject.get("age")
: 0L; // 默认值处理
3. 文件写入操作
java
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
并返回标准错误码
java
// 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 和微服务架构奠定坚实基础。建议根据项目需求选择合适的解析方案,并注重异常处理和性能优化。