gpt4 book ai didi

java - Jackson 解串器 - 注入(inject) key :value pairs if not present in serialized data

转载 作者:行者123 更新时间:2023-12-01 22:38:45 29 4
gpt4 key购买 nike

我将事件的有效负载作为 JSON 字符串保存到数据库中。为了在代码中只有一种版本的事件,同时仍然能够读取旧事件,我想在反序列化之前“向上转换”序列化数据。

我想到了这样的事情:

public Object deserialize(String data, Class<?> clazz) throws IOException {
data = upcaster.upcast(data, clazz);
return objectMapper.readValue(data, clazz);
}

但这意味着我将字符串转换为某个 JSON 对象两次。一次用于向上转换数据,一次进入标准 jackson 映射器。

有没有办法在构建 json 对象和构建我的事件对象之间自定义 Jackson?

类似于:

@override
updateData(clazz, jsonData) {
if(clazz.equals(SpecificEvent.class)) {
if(!jsonData.containsKey("addedInfo")) {
jsonData.put("addedInfo", "foo");
}
}
}

或者,我可以添加自己的反序列化器,在调用标准反序列化器之前更改给定的 JSON 数据?

与 jackson 一起做这样的事情的正常方式是什么?

最佳答案

一个选项是 custom deserialization使用专用的解串器类(根据您自己的类)。然后,您必须维护反序列化器类以确保它提供任何丢失的数据。

它应该适用于少数类,如果你有很多类,那么可能有更好的方法。

关于java - Jackson 解串器 - 注入(inject) key :value pairs if not present in serialized data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58510627/

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