使用 Jackson 的 ObjectMapper 将 protobuf 转换为 JSON 时出现以下错误:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
Direct self-reference leading to cycle (through reference chain:
MyObjectPb$MyObject["unknownFields"]->
com.google.protobuf.UnknownFieldSet["defaultInstanceForType"])
MyObjectPb 具有以下字段:
protected com.google.protobuf.UnknownFieldSet unknownFields
在处理现有代码库时,我有以下限制:
我无法修改 MyObjectPb 的源代码,因此我无法在 MyObjectPb 中使用 Jackson 的 ignore 注释。
我也不能使用 Gson 的库来转换对象,因为代码库已经使用 Jackson 进行序列化。不建议添加新的依赖项。
我如何告诉 Jackson 忽略(反)序列化 MyObjectPb 中的 UnknownFieldSet 对象?
我尝试了以下方法,但这些方法似乎无法解决问题:
a) 配置 ObjectMapper:
myObjectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
myObjectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
b) 使用 Jackson Mixin:
@JsonIgnoreType
private abstract class UnknownFieldSetIgnoreMixIn {}
myObjectMapper.addMixIn(UnknownFieldSet.class, UnknownFieldSetIgnoreMixIn.class)
动漫人物
慕丝7291255
炎炎设计
相关分类