首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定Java类型是否可以从JSON转换为JSON

如何确定Java类型是否可以从JSON转换为JSON
EN

Stack Overflow用户
提问于 2020-03-29 19:19:53
回答 1查看 83关注 0票数 0

JSON-B将LocalDate之类的类型转换为简单字符串,或将其转换为简单字符串。当我有一个Type的时候,我怎么知道JSON-B会不会直接转换这个类型,比如它是不是标量类型?

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

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

EN

回答 1

Stack Overflow用户

发布于 2020-03-29 22:18:44

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

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

  • 该类必须是可访问的(公共的或受保护的)
  • 如果该类是内部类,它必须是static
  • 零个或多个包含/返回可序列化类型的公共字段/getters

一般而言,可反序列化类型的规则如下:

  • 类必须是可访问的( @JsonbCreator

或protected)

  • If类是内部类它必须是静态静态字段/

  • 包含/返回可反序列化类型的零个或多个公共字段/

  • 类必须有一个公共的非参数构造函数(或用@JsonbCreator

注释的ctor该类必须有一个用public注释的公共静态工厂方法

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

由于可转换类型是一个如此宽泛的术语,如果您更深入地指定您试图实现的目标,这将是很有帮助的--也许我可以建议一种更具体的方法。

其他信息:

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60913437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档