Max*_*idt 31 java json jackson deserialization
我想用Jackson反序列化JSON-Object.因为目标是一个接口,我需要指定应该使用哪个实现.
可以使用@JsonTypeInfo-Annotation将此信息存储在JSON-Object中.但是我想在源代码中指定实现,因为它始终是相同的.
这可能吗?
Dav*_*ant 34
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule("CustomModel", Version.unknownVersion());
SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver();
resolver.addMapping(Interface.class, Implementation.class);
module.setAbstractTypes(resolver);
mapper.registerModule(module);
Run Code Online (Sandbox Code Playgroud)
Ily*_*nov 24
如果您只有单个接口实现,还有另一种方法可行.
public class ClassYouWantToDeserialize {
@JsonDeserialize(as = ImplementationClass.class)
private InterfaceClass property;
...
}
Run Code Online (Sandbox Code Playgroud)
这个问题很久以前就得到了回答,但是我想给你另一个选项,它不需要调整ObjectMapper,也比@JsonTypeInfo注释简单得多.
您也可以@JsonDeserialize(as = ImplementationClass.class)
在界面上使用 ,所有引用都将以相同的方式反序列化.
注意,如果您的某个实现类是枚举,那么您可能还需要@JsonFormat(shape = JsonFormat.Shape.OBJECT)
枚举.
归档时间: |
|
查看次数: |
27153 次 |
最近记录: |