2017-10-11 706 views
0

我使用Jackson 2.8进行REST服务响应的序列化。为了防止在大多数服务相关的Javascript(用来存储数量为64位IEEE 754浮点值)数目损坏我想申请以下JsonGenerator功能领域屈指可数的如何禁用某些字段的Jackson序列化功能WRITE_NUMBERS_AS_STRINGS?

objectMapper.configure(WRITE_NUMBERS_AS_STRINGS, true); 

值是不容易IEEE 754转换错误。但是,当它们作为字符串序列化时,会导致客户端应用程序出现错误,其中的重构(在这种情况下)可能是单调乏味且更好避免的。

我使用JsonSerialize注释

@JsonSerialize(as = int.class)  
int status; 

,但没有成功尝试。看起来WRITE_NUMBERS_AS_STRINGS优先于注释。

问题是如何(如果可能的话)配置WRITE_NUMBERS_AS_STRINGS功能应用的规则中的某些排除项?

回答

1

从杰克逊2个注解documentation

@JsonRawValue:可用于每个属性的标记来指定 的属性的值是要被包括在序列化“”准确“” 原样,与没有逃脱或装饰

看起来像@JsonRawValue即使与WRITE_NUMBERS_AS_STRINGS适用于您的情况。


另一种选择是使用自定义序列,如果你有这样的事情在你的POJO Map<String, Long> field;,因为你不能用任何默认注释到达地图的键/值。

+0

感谢@JsonRawValue - 它帮助。我在发布问题之前尝试了自定义序列化器类 - 它没有 – AlexK

相关问题