序列化对象实例基本属性杰克逊

时间:2016-04-19 10:21:01

标签: java json serialization jackson

我有一个像这样的主要对象:

    public class MainObject{

        @Column(unique = false, updatable = true, insertable = true, nullable = true, length = 255, scale = 0, precision = 0)
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;

        @Column(unique = true, updatable = true, insertable = true, nullable = true, length = 255, scale = 0, precision = 0)
        @Basic
        private String name;

        @JsonIgnoreProperties({"address" ... } )
        @ManyToOne(optional = true, targetEntity = Company.class)
        private Child child;

    }

我想将这个子对象的一个​​属性序列化为" basic"类型。正如您所看到的,我最好的解决方案是忽略子对象的所有其他属性。

我的目标是得到这样的东西:

{
    "id" = 12,
    "name" =  "some name",
    "company" = 42
}

但是到目前为止我用我最好的解决方案,你可以看到鞋帮我得到以下内容:

 {
        "id" = 12,
        "name" =  "some name",
        "company" = {
           "id" = 42
       }
    }

我知道我可以在儿童对象中使用注释,但这里是棘手的部分,在我的程序的其他部分我想要正常序列化孩子。

public class Child{

    @Column(unique = false, updatable = true, insertable = true, nullable = true, length = 255, scale = 0, precision = 0)
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(unique = true, updatable = true, insertable = true, nullable = true, length = 255, scale = 0, precision = 0)
    @Basic
    private String name;

    @Column(unique = true, updatable = true, insertable = true, nullable = true, length = 255, scale = 0, precision = 0)
    @Basic
    private String address;

    ...
}

是否有一种简单的注释方式可以获得我想要的东西?

1 个答案:

答案 0 :(得分:0)

感谢帮助@gigadot,但我找到了一种更懒惰的方式。

所以我只是忽略了孩子

@JsonIgnore
@ManyToOne(optional = true, targetEntity = Company.class)
private Child child;

然后我用 @JsonProperty创建一个简单的方法(" child")

   @JsonProperty("child")
    public Long getChildId(){
        return this.child.getId();
    }