我遇到了Serializer的问题,这是我的问题:
我有一个像这样的bean类:
@JsonSerialize(using = MyObjectSerializer.class)
public class MyObject {
public int a;
public boolean b;
}
当通过Jackson序列化时,没有@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。
所以问题可能是:
或
我曾经一直用GSon这样做,但杰克逊提供了我喜欢使用的大量功能;)
答案 0 :(得分:0)
我非常确定在您的示例getVersion()
中,没有支持属性的getter就足够了,您可以在其中生成0.1-beta
。 (或根据您描述的几个属性的值生成值)。
因此,不需要为此目的使用自定义序列化程序