概述
Fory JSON 是 Apache Fory 提供的线程安全 Java JSON 编解码器。它为 Java 对象、record、 基于 creator 的不可变类、常见 JDK 类型、泛型容器、自定义完整值 codec,以及通过注解声明的 有限多态提供解释执行和运行时生成的 codec。
Fory JSON 与 Fory 的 native 和 xlang 二进制协议是不同的数据格式。当系统需要与浏览器、API、 日志、配置或其他 JSON 实现交换普通 JSON 时,请使用 Fory JSON。需要跨语言 Schema 元数据、 引用标识、循环对象图或 Fory 仅二进制协议支持的功能时,请使用 Fory 二进制协议。
文档导航
| 目标 | 页面 |
|---|---|
| 运行第一个 JSON 往返示例 | 快速开始 |
| 了解 Java 对象映射和配置 | 对象映射 |
| 配置属性、creator、值、validator 和子类型 | 注解 |
| 扩展完整值、子值和 Map 键 | 自定义 Codec |
| 部署到 Android | Android |
| 构建 GraalVM Native Image | GraalVM Native Image |
| 安全解码输入 | 安全 |
| 诊断故障 | 故障排查 |
限制和不支持的功能
Fory JSON 有意提供比 Fory 二进制协议和通用 Jackson 对象映射更小的语义范围:
- 不支持共享引用标识或循环引用协议;
- 不支持开放多态、JSON 类名 ID、运行时子类型发现,也不支持在运行时扩展子类型表;
- 不提供
InputStream解析器或增量式OutputStreamwriter;这些能力不在ForyJson根 API 中; - 不提供美化输出配置;
- 不提供 Jackson/Gson 注解兼容层;
- 不支持别名、view、filter、注入、managed/back reference、对象标识注解或根包装;
- 不处理 Fory core 的
Expose。
循环对象图最终会因 maxDepth 而失败,不会被重建。需要引用标识或循环引用时,请使用
Fory core 的 native 或 xlang 二进制协议。
相关 Java 指南
二进制序列化请从 Java 对象序列化开始,并选择 xlang 或 native。 二进制 builder 选项另见 Java 配置。