弹簧休息客户端,将部分响应对象解析为 Set



我在春天和杰克逊一起创建了一个简单的休息客户端进行培训。我有两个模型国家和联赛。 国家有:

private Set<League> leagues;
@JsonProperty("country_id")
private long apiCountryId;
@JsonProperty("country_name")
private String name;

当然还有吸盘手和二传手 联盟只有ID和名字。 现在我想从 apifootbal 获取数据,响应如下所示:

[
{
"country_id":"169",
"country_name":"England",
"league_id":"62",
"league_name":"Premier League"
},
{
"country_id":"169",
"country_name":"England",
"league_id":"65",
"league_name":"League 2"
},
{
"country_id":"169",
"country_name":"England",
"league_id":"66",
"league_name":"Nat. League"
}
]

所以前 2 个元素是相同的,最后一个元素对于每个对象都是不同的,联盟不是单独的对象,所以我不能把它拿出来。现在我不知道如何创建一个国家/地区对象

,如下所示:
id: 169,
name: England,
league: [{
id:"62",
name:"Premier League"
}, {
id:"65",
name:"League 2"
}, {
id:"66",
name:"Nat. League"
}]

我知道如何在其中创建拥有所有数据的国家/地区对象数组,但我不知道如何将其与一个国家/地区和 3 个联赛对象分开(以及如何将它们添加到国家/地区对象的集合中(。一种选择是将league_id和league_name添加到国家/地区,并在迭代后从中制作联盟对象,但这是唯一的方法吗?

您可以编写自定义反序列化程序并编写自定义逻辑来处理此类数据。

请参考使用 jackson xml 映射器将 xml 反序列化为 pojo(该示例在 XML 中,但也可以类似地用于 JSON(