所以我有一个看起来像这样的 Item 类(排除额外的东西):
{
"id": 1,
"item": "something",
"account": {
"id": 5,
"name": "somename"
}
}
我希望所有者点击像这样出现
{
"id": 1,
"item": "something",
"account": "somename"
}
我知道如何通过更改 Item 在 Jackson 中序列化的方式来做到这一点,但是如果我要更改序列化 Item 的方式,我将必须包含它具有的所有额外字段,而且 Item 是一个基类,所以我还必须对所有子类做一些事情,这工作量太大了(或者是这样,不知道是否有人有一个简单的解决方案如何序列化仅一个字段并包含所有其余字段)。所以我的问题是我可以序列化 Account 类并使其返回一个简单的 String (不是 json 对象或类似的东西)。 我尝试使用 JsonGenerator 使其看起来相似,但到目前为止我所做的最好的是:
{
"id": 1,
"item": "something",
"account": {"account":"somename"}
}
谢谢!
最佳答案
我认为您想要的是来自 Jackson 的 @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”字段进行序列化。
您还可以查看本教程:
关于java - Jackson 将对象序列化为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43603929/