Java处理JSON编程实用技巧

Java 处理 JSON 编程实用技巧(2026最新版)
—— 从入门到生产级,一篇搞定! 🔥

大家好!JSON 是 Java 后端开发中最常见的数据交换格式
无论是 REST 接口、配置文件、消息队列、Redis 缓存、日志解析……到处都是 JSON。

本文基于 2026 年主流生态,精选 最实用、最推荐 的技巧,涵盖 Jackson(官方推荐)、FastJSON2、Gson 三种库,全部代码可直接复制运行。


一、2026 年 Java JSON 生态推荐对比

速度功能丰富度内存占用Spring Boot 默认推荐场景最新版本
Jackson★★★★★★★★★企业级、生产首选2.18+
FastJSON2★★★★★★★★★☆高性能、对中文友好2.0.52+
Gson★★★★★★☆☆Android、小工具、简单场景2.10.1+

结论(2026推荐)

  • 企业项目 / Spring BootJackson(强烈推荐)
  • 追求极致性能FastJSON2
  • 轻量工具Gson

二、Jackson 实战技巧(生产首选)

1. 基础依赖(Maven)

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.18.2</version>
</dependency>

2. 核心对象:ObjectMapper(单例使用!)

// 推荐全局单例,线程安全
private static final ObjectMapper mapper = new ObjectMapper()
    .enable(SerializationFeature.INDENT_OUTPUT)           // 美化输出
    .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
    .setSerializationInclusion(JsonInclude.Include.NON_NULL); // 忽略null字段

3. 常用实用技巧(直接复制)

// 1. 对象 → JSON 字符串
User user = new User(1L, "张三", 18, "1234567890@qq.com");
String json = mapper.writeValueAsString(user);
System.out.println(json);

// 2. JSON 字符串 → 对象
User u = mapper.readValue(json, User.class);

// 3. JSON → List / Map(最常用!)
String jsonList = "[{\"id\":1,\"name\":\"李四\"},{\"id\":2,\"name\":\"王五\"}]";
List<User> list = mapper.readValue(jsonList, new TypeReference<List<User>>(){});

// 4. 优雅处理日期(2026推荐写法)
mapper.registerModule(new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

// 5. 忽略未知字段(接口兼容神器)
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

// 6. 漂亮打印(调试用)
String pretty = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user);

4. 注解使用技巧(提升可读性)

@JsonIgnoreProperties(ignoreUnknown = true)   // 类级别忽略未知字段
public class User {
    @JsonProperty("user_id")                  // 字段名映射
    private Long id;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String email;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    @JsonIgnore                                // 忽略该字段
    private String password;
}

三、FastJSON2 实用技巧(性能党最爱)

依赖

<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.52</version>
</dependency>

核心 API(比 Jackson 更简洁):

// 对象 → JSON
String json = JSON.toJSONString(user);

// JSON → 对象
User u = JSON.parseObject(json, User.class);

// JSON → List
List<User> list = JSON.parseArray(jsonList, User.class);

// 漂亮打印
String pretty = JSON.toJSONString(user, JSONWriter.Feature.PrettyFormat);

// 日期格式全局配置
JSON.config(JSONWriter.Feature.WriteDateUseTimeZone);

FastJSON2 特有优势

  • 对中文支持极好
  • 极致性能(比 Jackson 快 30%~100%)
  • 支持 JSONPath 查询

四、Gson 实用技巧(轻量场景)

Gson gson = new GsonBuilder()
    .setPrettyPrinting()
    .setDateFormat("yyyy-MM-dd HH:mm:ss")
    .create();

String json = gson.toJson(user);
User u = gson.fromJson(json, User.class);

五、生产级最佳实践(强烈建议遵守)

  1. 全局统一 ObjectMapper / JSON 配置(不要到处 new)
  2. 统一日期格式yyyy-MM-dd HH:mm:ssInstant
  3. 接口返回统一包装:使用 @JsonInclude + 自定义 Result<T>
  4. 大 JSON 优化:使用 Streaming API(Jackson JsonParser / JsonGenerator)
  5. 安全性:禁止直接把前端传来的 JSON 转对象,要做字段校验(@Valid + Bean Validation)
  6. 性能监控:生产环境可开启 Jackson 的 SerializationFeature.FAIL_ON_EMPTY_BEANS 等配置

六、今日作业(建议立刻动手)

  1. Jackson 把一个 List<User> 转成 JSON,再转回来
  2. FastJSON2 实现带日期格式和漂亮打印的序列化
  3. 自定义一个 Result<T> 统一返回类,并加上 Jackson 注解

把作业代码贴到评论区,我会逐条点评优化!


下一期预告:《Java 处理 JSON 进阶篇 —— JSONPath、树模型、Streaming API、大文件处理》

把这篇文章收藏 + 转发给你的 Java 后端小伙伴吧 —— 掌握 JSON 处理,你就掌握了前后端数据通信的命脉!

(本文所有代码均在 Java 17/21 + Spring Boot 3.3 + Jackson 2.18 / FastJSON2 2.0.52 环境下实测通过)

文章已创建 4992

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部