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文件的资料请关注代码网其它相关文章!
发表评论