Skip to main content
版权归属于 LangChat Team
官网:https://langchat.cn

14 - JSON 处理

版本说明

本文档基于 LangChain4j 1.10.0 版本编写。

学习目标

通过本章节学习,你将能够:
  • 理解 LangChain4j 中的 JSON 序列化机制
  • 掌握 @Jackson 注解的使用方法
  • 学会配置 JSON 对象映射策略
  • 理解自定义 JSON 序列化器
  • 掌握 JSON 工具的使用和最佳实践
  • 实现一个完整的 JSON 处理示例

前置知识

  • 完成《01 - LangChain4j 简介》章节
  • 完成《02 - 你的第一个 Chat 应用》章节
  • Java 基础知识(熟悉 Jackson 库)

核心概念

什么是 JSON 处理?

在 LangChain4j 中,JSON 处理主要涉及:
  1. 将对象序列化为 JSON 格式(用于传递给 LLM)
  2. 将 LLM 返回的 JSON 字符串反序列化为对象
  3. 处理复杂的嵌套 JSON 结构

为什么需要特殊处理?

LangChain4j 默认使用 Jackson,但有时需要自定义:
  • 控制日期格式
  • 忽略空值或未知属性
  • 自定义字段命名策略(camelCase ↔ snake_case)
  • 处理复杂的继承结构

Jackson 配置要点

@Jackson 注解

使用 @Jackson 禁用序列化

使用 @JsonAlias 设置别名

自定义序列化器

日期格式化

枚举序列化

JSON 工具方法

创建 ObjectMapper

JSON 与 LLM 集成

传递 JSON 给 LLM

测试代码示例

实践练习

练习 1:实现 API 响应 JSON 工具

练习 2:实现配置化 JSON 序列化

练习 3:实现动态 JSON 生成器

总结

本章要点

  1. JSON 处理概念
    • 序列化和反序列化
    • LangChain4j 中的 JSON 处理
    • 与 LLM 的集成
  2. @Jackson 注解
    • @JsonProperty - 设置 JSON 字段名
    • @JsonAlias - 设置字段别名
    • @JsonIgnore - 忽略字段
    • @JsonSerialize - 自定义序列化
  3. 自定义序列化器
    • 日期格式化
    • 枚举序列化
    • 复杂对象序列化
  4. JSON 工具
    • ObjectMapper 创建
    • 序列化和反序列化
    • 格式化输出
    • 错误处理
  5. 最佳实践
    • 合理配置 ObjectMapper
    • 使用注解简化代码
    • 处理日期和时间格式
    • 避免循环引用

下一步

在下一章节中,我们将学习:
  • 日志和监控
  • 可观测性配置
  • 性能分析和优化
  • 错误处理和重试
  • 测试和评估

常见问题

Q1:LangChain4j 使用哪个 JSON 库? A:LangChain4j 默认使用 Jackson,这是 Java 中最流行的 JSON 处理库之一。 Q2:如何配置日期格式? A:可以通过以下方式配置:
  1. 注册 JavaTimeModule
  2. 设置 DateFormat
  3. 禁用 WRITE_DATES_AS_TIMESTAMPS
  4. 使用 @JsonFormat 注解
Q3:如何处理循环引用? A:
  1. 使用 @JsonIgnore 忽略循环引用字段
  2. 使用 @JsonIdentityInfo 标识对象
  3. 配置 ObjectMapper 处理循环引用
  4. 使用 @JsonManagedReference 自定义引用处理
Q4:如何控制 null 值的序列化? A:
  1. 全局配置:mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)
  2. 局部注解:@JsonInclude(JsonInclude.Include.NON_NULL)
  3. 自定义序列化器:在序列化器中检查并处理
Q5:如何优化 JSON 性能? A:优化技巧:
  1. 重用 ObjectMapper 实例
  2. 避免不必要的序列化和反序列化
  3. 使用树模型而非对象模型
  4. 配置适当的序列化特性
  5. 考虑使用更快的 JSON 库(如 Gson)在性能关键场景

参考资料


版权归属于 LangChat Team
官网:https://langchat.cn