我有一个位于 .jar 中的类,我无法修改。
@JsonSerialize()它在类上有一个注释。
@JsonSerialize(using = SomeClassSerializer.class)
@JsonDeserialize(using = SomceClassDeserializer.class)
public class SomeClass { /* ommitted */ }
Run Code Online (Sandbox Code Playgroud)
现在我需要在此类上运行自定义序列化器以输出完全不同的 JSON。
这是我尝试过的:
final SomeClass sc = new SomeClass();
// setup ommitted
final ObjectMapper m = new ObjectMapper();
final SimpleModule module = new SimpleModule();
module.addSerializer(SomeClass.class, new CustomClassSerializer());
m.registerModule(module);
m.enable(SerializationFeature.INDENT_OUTPUT);
m.writer().writeValue(System.out, sc);
Run Code Online (Sandbox Code Playgroud)
问题是我得到默认的带注释的SomeClassSerializer输出,而不是CustomClassSerializer输出。
ObjectMapper忽略注释?小智 5
final ObjectMapper m = new ObjectMapper();
m.disable(MapperFeature.USE_ANNOTATIONS);
Run Code Online (Sandbox Code Playgroud)
经过深入研究 JavaDocs,我找到了这个解决方案,这似乎是最惯用的方法。
| 归档时间: |
|
| 查看次数: |
2214 次 |
| 最近记录: |