【发布时间】:2015-07-03 10:31:01
【问题描述】:
使用 Jackson,我知道我可以使用 @JsonView 在视图的序列化中包含/排除属性。
如何通过视图改变 JSON 属性的值?
例如,我可能希望视图 A 中的属性值是整个对象,在视图 B 中是过滤掉某些属性的对象,在视图 C 中,我只希望它是“id”(没有对象),在视图 D 中,我可能希望它是“名称”(无对象):
// view A JSON
{
"prop": {"id": 123, "name": "abc", "description": "def"}
}
// view B JSON
{
"prop": {"id": 123, "name": "abc"}
}
// view C JSON
{
"prop": 123
}
// view D JSON
{
"prop": "abc"
}
【问题讨论】:
-
+1,这是个好问题。在您的示例中,我通常生成
{"prop":{"id":123}}以查看C和{"prop":{"name":"abc"}}以查看D。我也想知道当只有一个值时如何删除属性名称;) -
使用标准
@JsonView可以实现A和B,但不能使用C和D。看看这个问题:github.com/FasterXML/jackson-databind/issues/440