使用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"])
Run Code Online (Sandbox Code Playgroud)
MyObjectPb具有以下字段:
protected com.google.protobuf.UnknownFieldSet unknownFields
Run Code Online (Sandbox Code Playgroud)
当我在现有代码库上工作时,我有以下限制:
如何告诉Jackson忽略(反序列化)MyObjectPb中的UnknownFieldSet对象?
我尝试了以下方法,但是这些方法似乎无法解决问题:
a)配置ObjectMapper:
myObjectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
myObjectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
Run Code Online (Sandbox Code Playgroud)
b)使用杰克逊混音:
@JsonIgnoreType
private abstract class UnknownFieldSetIgnoreMixIn {}
myObjectMapper.addMixIn(UnknownFieldSet.class, UnknownFieldSetIgnoreMixIn.class)
Run Code Online (Sandbox Code Playgroud)