gpt4 book ai didi

json - 如何使用 Jackson 将 bool 值序列化为 JSON 作为字符串

转载 作者:行者123 更新时间:2023-12-04 11:39:00 24 4
gpt4 key购买 nike

我们使用 Jersey JAX-RS 和 Jackson(版本 2.1.5)开发了一个用于 JSON 序列化的 REST 服务。

由于该应用程序应该是作为现有移动应用程序后端的旧遗留服务的替代品,因此我们需要对 Jackson 序列化 bool 值的方式进行一些调整。

现有的移动应用程序期望 bool 值表示为“true”和“false”字符串,如下所示:

{"Foo":"true","Bar":"false"}

所以我已经寻找一种方法来影响 jackson 序列化以将 bool 值输出为字符串,但我没有成功。

哦,顺便说一句 - 因为我们的模型类是使用 JAXB 类生成从 xml 模式生成的,所以我们不能用 json 注释对类进行注释。

我尝试使用 ObjectMapper 注册一个模块,该模块为 bool 对象提供了一个自定义的序列化程序,但它似乎不起作用。

最佳答案

Jackson 2.16 原始数据类型的自定义序列化程序。
您应该编写自己的序列化程序。 bool 数据类型的示例代码

//创建一个带有自定义 bool 序列化器的模块

class BooleanSerializer extends JsonSerializer<Boolean> {
private final static Logger logger = LoggerFactory.getLogger(BooleanSerializer.class);
@Override
public void serialize(Boolean value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonGenerationException {
logger.info("serializing boolean value as a Strng {}",value);
jgen.writeString(value.toString());
}

}

//使用 ObjectMapper 注册自定义 BooleanSerializer 类。

//这里是我们配置对象映射器的地方
 ObjectMapper mapper = new ObjectMapper();

SimpleModule simpleModule = new SimpleModule("BooleanAsString", new Version(1, 0, 0, null, null, null));
simpleModule.addSerializer(Boolean.class,new BooleanSerializer());
simpleModule.addSerializer(boolean.class,new BooleanSerializer());

mapper.registerModule(module);

关于json - 如何使用 Jackson 将 bool 值序列化为 JSON 作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19678340/

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