我的序列化程序有问题,这是我的问题:
我有一个这样的 bean 类:
@JsonSerialize(using = MyObjectSerializer.class)
public class MyObject {
public int a;
public boolean b;
}
当通过杰克逊进行序列化时,没有 @JsonSerialize 注释,我显然得到:
{ "a": 42, "b": true}
但我需要添加一个属性,以便它给出:
{ "a": 42, "b": true, "version": "0.1-beta" }
(这是一个例子,在现实世界中,我添加的属性取决于对象的几个属性)
所以我需要编写一个自定义序列化程序。但是,在我的真实代码中,该类包含的属性远不止 2 个。所以我不想手动为 json 对象创建这些属性......
如果我使用这个:
public static class MyObjectSerializer extends JsonSerializer<MyObject> {
@Override public void serialize(MyObject obj, JsonGenerator json, SerializerProvider provider) throws IOException, JsonProcessingException {
json.writeObject(obj);
}
}
我显然得到了 StackOverflowError。
所以问题可以是:
- 如何从 JsonSerializer 内部序列化对象而不重新调用序列化程序本身?
或者
- 如何动态地将属性添加到正在序列化的对象。
我过去一直使用 GSon 来做这件事,但杰克逊提供了很多我喜欢使用的功能;)