如何禁用某些字段的Jackson序列化功能WRITE_NUMBERS_AS_STRINGS?
问题描述:
我使用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功能应用的规则中的某些排除项?
答
从杰克逊2个注解documentation:
@JsonRawValue
:可用于每个属性的标记来指定 的属性的值是要被包括在序列化“”准确“” 原样,与没有逃脱或装饰
看起来像@JsonRawValue
即使与WRITE_NUMBERS_AS_STRINGS
适用于您的情况。
另一种选择是使用自定义序列,如果你有这样的事情在你的POJO Map<String, Long> field;
,因为你不能用任何默认注释到达地图的键/值。
感谢@JsonRawValue - 它帮助。我在发布问题之前尝试了自定义序列化器类 - 它没有 – AlexK