对象树结构的JSON序列化

时间:2017-12-20 15:01:34

标签: java json serialization jackson

在使用关系序列化我的POJO时,我曾经为每个类创建不同的视图。对于每个类,我创建了一个视图Basic,只显示标量属性,Detail包括我所有的关系。它看起来像这样:

public class Stage extends BasicDomainObject {

    @JsonView(Views.Stage.Basics.class)
    protected String stageType = "";

    @JsonView(Views.Stage.Basics.class)
    protected String scheduledReleaseGraph = "";

    @JsonView(Views.Stage.Details.class)
    private Pipeline pipeline;

    // ...
}

然后,在我的REST api层中,我可以通过指定正确的视图序列化正确的视图:

mapper.writerWithView(Views.Stage.Details.class).writeValueAsString(bean);

现在,我必须在private Stage parentStage课程中添加一个字段Stage。我正在尝试使用Details视图显示输出:

{
    "id": 2,
    "type": "dev",
    "scheduledReleaseGraph" "xxx",
    "pipeline" : {
         ...
    },
    "parent" : {
        "id": 1,
        "type": "dev",
        "scheduledReleaseGraph" "yyy"
    }
}

此处的目标是仅显示一个深度级别的parent关联。 实现这一目标的常见模式是什么?

1 个答案:

答案 0 :(得分:1)

如果您使用Jackson 2.0,我会查看JsonIdentityInfo属性: https://fasterxml.github.io/jackson-annotations/javadoc/2.0.0/com/fasterxml/jackson/annotation/JsonIdentityInfo.html

此注释可帮助您在序列化/反序列化时处理循环引用。