gpt4 book ai didi

java - 我如何知道 Java 类型是否可以从 JSON 转换为 JSON

转载 作者:行者123 更新时间:2023-12-01 17:43:06 24 4
gpt4 key购买 nike

JSON-B 将 LocalDate 等类型与简单字符串相互转换。当我有一个 Type 时,如何确定 JSON-B 是否会直接转换该类型,即它是否是标量类型?

我没有实例,所以我什至不能尝试将其转换为字符串并查看它是否包含大括号。

或者我是否必须寻找具有 valueOfparse 方法的类型或仅具有一个字符串参数的构造函数?

最佳答案

可以提前检查给定类型是否可以序列化为 JSON(即从强类型转换为弱类型格式),但没有办法检查给定类型是否可以反序列化为 POJO直到您在运行时获得实际的 JSON 值(即从弱类型格式转换为强类型格式)。

一般来说,类型可序列化的规则很简单:

  • 该类必须可访问(公共(public)或 protected )
  • 如果该类是内部类,则它必须是静态的
  • 零个或多个包含/返回可序列化类型的公共(public)字段/getter

一般来说,类型可反序列化的规则是:

  • 该类必须可访问(公共(public)或 protected )
  • 如果该类是内部类,则它必须是静态的
  • 零个或多个包含/返回可反序列化类型的公共(public)字段/setter
  • 该类必须具有公共(public)无参数构造函数(或用 @JsonbCreator 注释的构造函数)
  • 或者该类必须具有使用 @JsonbCreator 注释的公共(public)静态工厂方法

您可能会发现,“可转换类型”的构成是 JSON-B(或任何其他 Java JSON 库)中非常广泛的标准。例如,JSON 字符串 {} 可以反序列化为任何具有公共(public)无参数构造函数的类型。同样,没有公共(public)字段或 getter 方法的 Java 类将序列化为 JSON 字符串 {}

由于可转换类型是一个如此广泛的术语,因此如果您进一步指定您想要实现的目标,将会很有帮助 - 也许我可以建议一种更具体的方法。

<小时/>

其他信息:

支持 JDK 中的许多常用类。请参阅sections 3.3 - 3.5 of the JSON-B spec获取完整列表。除了内置类之外,section 3.7 of the JSON-B spec 中还指定了要求。 .

对于反序列化来说,比序列化有更多的要求。它们在第 3.7 节和 section 4.5 中有详细描述。 .

关于java - 我如何知道 Java 类型是否可以从 JSON 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60913437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com