首页 > Java > java教程 > 正文

Java怎么解析JSON数据 Java使用Jackson处理JSON教程

看不見的法師
发布: 2025-07-23 14:10:02
原创
334人浏览过

jackson是java中最流行的json处理库,适用于接口调用、配置读取等场景。1. 核心组件包括jackson-core(核心功能)、jackson-annotations(注解支持)和jackson-databind(数据绑定),使用时需引入databind依赖。2. 反序列化时,通过objectmapper的readvalue方法将json转为java对象,字段名不一致可用@jsonproperty映射,设置fail_on_unknown_properties控制字段匹配策略。3. 序列化时,使用writevalueasstring将对象转为json字符串,可使用writerwithdefaultprettyprinter美化格式,@jsonignore或@jsoninclude控制字段输出。4. 支持复杂结构,如通过typereference解析json数组为list,嵌套对象可直接定义类结构进行映射。掌握这些操作即可应对多数json处理需求。

Java怎么解析JSON数据 Java使用Jackson处理JSON教程

在Java开发中,解析JSON数据是一个很常见的需求,比如调用接口、读取配置文件、处理网络请求返回的数据等。而Jackson是目前Java生态中最流行、功能最强大的JSON处理库之一。它不仅性能好,而且用起来也很灵活。

Java怎么解析JSON数据 Java使用Jackson处理JSON教程

1. Jackson核心组件简介

Jackson的核心组件主要包括:

  • jackson-core:核心包,提供流式解析器和生成器。
  • jackson-annotations:提供注解支持,用于序列化和反序列化时的字段映射。
  • jackson-databind:封装了数据绑定功能,可以将JSON字符串直接映射成Java对象。

在使用前,你需要在项目中引入Jackson依赖。如果你使用Maven,可以在pom.xml中添加如下依赖:

立即学习Java免费学习笔记(深入)”;

Java怎么解析JSON数据 Java使用Jackson处理JSON教程
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.3</version>
</dependency>
登录后复制
注意:jackson-databind会自动引入前两个核心包。

2. 将JSON字符串转为Java对象(反序列化)

这是最常见的操作之一。比如你从接口获取了一个JSON字符串,想把它转成Java对象来操作。

Java怎么解析JSON数据 Java使用Jackson处理JSON教程

举个例子:

{
  "name": "张三",
  "age": 28
}
登录后复制

对应的Java类:

public class User {
    private String name;
    private int age;

    // getters and setters
}
登录后复制

使用Jackson解析:

ObjectMapper mapper = new ObjectMapper();
String json = "{\"name\":\"张三\",\"age\":28}";

User user = mapper.readValue(json, User.class);
System.out.println(user.getName());  // 输出:张三
登录后复制

常见注意事项:

  • 如果JSON字段名与Java类字段名不一致,可以用@JsonProperty("json_key")注解来映射。

  • 默认情况下,Jackson会忽略无法匹配的字段,如果希望严格匹配,可以设置:

    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    登录后复制

3. 将Java对象转为JSON字符串(序列化)

反过来,你也可以把一个Java对象转换成JSON字符串,常用于构建API响应。

Tellers AI
Tellers AI

Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。

Tellers AI 78
查看详情 Tellers AI

继续使用上面的User类:

User user = new User();
user.setName("李四");
user.setAge(30);

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user);
System.out.println(json);  // 输出:{"name":"李四","age":30}
登录后复制

小技巧:

  • 想要美化输出格式(带缩进):

    String prettyJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user);
    登录后复制
  • 如果某些字段不想输出,可以在字段上加上@JsonIgnore,或者使用@JsonInclude控制输出策略。


4. 处理嵌套结构和集合类型

实际开发中,JSON结构往往比较复杂,比如嵌套对象、数组或集合。Jackson也支持这些结构的解析。

比如一个包含用户列表的JSON:

[
  {"name":"王五","age":25},
  {"name":"赵六","age":32}
]
登录后复制

可以这样解析成List<User>

List<User> users = mapper.readValue(json, new TypeReference<List<User>>() {});
登录后复制

如果是嵌套结构,比如:

{
  "user": {"name":"孙七","age":29},
  "role": "admin"
}
登录后复制

定义一个类:

public class UserInfo {
    private User user;
    private String role;

    // getters and setters
}
登录后复制

然后正常解析:

UserInfo info = mapper.readValue(json, UserInfo.class);
登录后复制

基本上就这些。掌握这几个常用操作,就能在大多数Java项目中轻松处理JSON数据了。

以上就是Java怎么解析JSON数据 Java使用Jackson处理JSON教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号