繁体   English   中英

杰克逊序列化器:获取序列化的对象

[英]jackson serializer: get serialized object

我的序列化器有问题,这是我的问题:

我有一个像这样的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来做到这一点,但杰克逊提供了很多我想使用的功能;)

我敢肯定,在您的示例getVersion() ,没有后备属性的吸气剂就足够了,在其中可以生成0.1-beta (或根据您描述的几个属性的值生成值)。

因此,不需要为此专门定制的序列化程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM