首页 > Java > java教程 > 正文

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

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

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响应。

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30
查看详情 Find JSON Path Online

继续使用上面的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号