所以我有一个看起来像这样的Item类(不包括额外的东西):
{
"id": 1,
"item": "something",
"account": {
"id": 5,
"name": "somename"
}
}
我希望所有者点击例如像这样
{
"id": 1,
"item": "something",
"account": "somename"
}
我知道如何通过改变在Jackson中序列化Item的方式来实现这一点,但是如果我要改变序列化Item的方式,我将必须包含它所有的额外字段,而Item也是一个基类所以我必须对所有子类做一些事情,这是太多的工作(或者是,如果有人有一个简单的解决方案,如何序列化一个字段并包括所有其余部分,不知道)。所以我的问题是我可以序列化Account类并使其返回一个简单的String(不是json对象或类似的东西)。 我尝试过使用JsonGenerator让它看起来很相似,但到目前为止我所做的最好的是:
{
"id": 1,
"item": "something",
"account": {"account":"somename"}
}
谢谢!
答案 0 :(得分:1)
我认为你想要的是杰克逊的@JsonIdentityInfo。
此注释允许您指定子实体在父实体中的序列化方式。
以下是一个例子:
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="productDescription")
@JsonIdentityReference(alwaysAsId=true) // otherwise first ref as POJO, others as id
private Product product;
这告诉Jackson应该使用产品bean" productDescription"来序列化产品bean。字段。
您还可以查看本教程:
答案 1 :(得分:0)
从头开始,我发现我的错误在于我总是开始: jsonGenerator.writeStartObject(); 结束于: jsonGenerator.writeEndObject(); 它本身使它返回一个对象。我所要做的只是使用writeString方法。