JSON-B将LocalDate之类的类型转换为简单字符串,或将其转换为简单字符串。当我有一个Type的时候,我怎么知道JSON-B会不会直接转换这个类型,比如它是不是标量类型?
我没有实例,所以我甚至不能尝试将其转换为字符串,并查看它是否包含大括号。
或者,我是否必须查找具有valueOf或parse方法的类型,或者具有恰好一个字符串参数的构造函数?
发布于 2020-03-29 22:18:44
可以提前检查给定类型是否可以序列化为JSON (即从强类型格式转换为弱类型格式),但在运行时获得实际JSON值之前(即从弱类型格式转换为强类型格式),无法检查给定类型是否可以反序列化为POJO。
一般来说,可序列化类型的规则很简单:
一般而言,可反序列化类型的规则如下:
@JsonbCreator或protected)
@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中对它们进行了详细描述。
https://stackoverflow.com/questions/60913437
复制相似问题