有没有办法使用泽西配置部分或完全序列化到json?

时间:2015-03-11 10:52:32

标签: java json file serialization jersey

我想使用jersey序列化一个java对象。

我想将其序列化并将其打印到文件中。

这是一个很大的对象,我想保存两次:

一个只有强制字段的短版本。

所有字段的完整版本中的第二个。

有没有办法这样做,除了创建两个DTO

并从大对象复制小对象,然后将它们序列化为json?

1 个答案:

答案 0 :(得分:1)

为了加快速度,Jersey帮助制作REST Web服务,Jackson帮助管理JSON对象。 所以你可以使用它们,并有更多的方法来玩你的对象。

扩展JsonSerializer,您可以提供2个自定义序列化程序以及您想要的行为。我没有重新发布我发表评论的链接,但其中有一个例子。 只是为了确定,对我来说,非平面对象是具有业务对象的私有属性的对象。如果是,是的,您可以序列化非平面对象。

要序列化非扁平物体,我认为有两种方法。我的开发基于我在评论中提供的链接(项目,用户,主类...)。 第一个,组合的一个很简单所以我可以使用这样的东西:

        jgen.writeStartObject();
        jgen.writeNumberField("id", value.id);
        jgen.writeStringField("itemName", value.itemName);

        jgen.writeObjectFieldStart("owner");
        jgen.writeNumberField("id", value.owner.id);
        jgen.writeStringField("name", value.owner.name);
        jgen.writeEndObject();

        jgen.writeEndObject();

在这种情况下,所有者由两个字段组成,非常简单。

第二个解决方案是使用另一个序列化程序: 一个用于主要对象,一个用于复合和使用:

jgen.writeObjectField("owner.", value.owner);

并且不要忘记添加组合对象序列化程序:

module.addSerializer(User.class, new UserSerializer());

希望这个帮助