【发布时间】:2021-09-23 17:25:48
【问题描述】:
我有一个复杂的嵌套 Json
它有一个类似这样的主体:
{
staus: "Success",
id: 1,
data: [{'Movie':'kung fu panda','% viewed': 50.5},{'Movie':'kung fu panda 2','% viewed':1.5}],
metadata: {'filters':['Movie', 'Percentage Viewed'], 'params':{'content':'Comedy', 'type': 'Movie'}}
}
我唯一关心的字段是数据,而元数据通常是一个更复杂/嵌套的字段。我试图将其映射到:
@JsonIgnoreProperties(ignoreUnknown = true)
class ResponseData{
public Data[] data;
@JsonIgnoreProperties(ignoreUnknown = true)
class Data{
public String Movie;
public double viewed;
}
}
我将 Jackson 视为一种选择,并编写自己的序列化程序并使用 JsonIgnore 丢弃元数据,但无法绕过它。
对如何做到这一点有什么建议吗?
【问题讨论】:
-
如果您的 JSON 与您的示例类似,只需提取您的 data 数组,首先找到
[和]。然后解析内容。 -
您可能希望将变量命名为
movie而不是Movie。 -
除了字段名,我看不出有什么问题。只需添加
@JsonProperty("% viewed")就可以了。 -
请注意,在 Java 中使用
List<Data>比使用Data[]更常见,但 Jackson 会同时处理这两种情况。 -
除非是强制性的,否则不要自己做。使用 Gson、Moshi 或 Jackson。他们可以实现你想要的
标签: java json jackson jsonserializer