WebClient映射嵌套对象

3

我正在使用WebClient来调用AI API

我需要从响应中嵌套的节点

示例API响应

{
    "api": {
        "results": 129,
        "countries": [
            {
                "country": "Albania",
                "code": "AL",
                "flag": "https:\/\/media.api-football.com\/flags\/al.svg"
            },
            {
                "country": "Algeria",
                "code": "DZ",
                "flag": "https:\/\/media.api-football.com\/flags\/dz.svg"
            }

        ]
    }
}

我只需要将每个国家映射到一个POJO中,但是我能够做到的唯一方法是通过组合复杂对象来实现与API响应相同的表示。

public class CountryResponse {
    private Countries api;
}

public class Countries {
    private int results;
    private List<Country> countries;
}

public class Country {
    private String country;
    private String code;
    private String flag
}

然后我调用API

CountryResponse countryResponse = webClient
            .get()
            .uri("countries")
            .retrieve()
            .bodyToMono(CountryResponse.class)
            .block();

我希望避免创建非常复杂的对象,只是为了能够映射API返回的JSON响应中的某个节点。

在您看来,这里有哪些非常复杂的对象? - Themelis
当我说复杂对象时,是指需要组合比我需要的更多。在这个例子中,我只想将响应映射到国家对象。 - Bruno Miguel
1个回答

1
我只需要将每个国家映射到一个POJO,但我能够这样做的唯一方法是通过组合复杂对象。请原谅我,但我没有在你的示例中提供任何复杂对象。相反,POJO是语言中最简单的对象。它只是一个没有任何行为的数据容器。因此,您正在从API获取一些数据,并在POJO中填充它们以便在应用程序中使用。我认为这样做没有什么问题。现在,如果您想要简化,可以处理Countries.results,因为您可以从Countries.countries.Size()获取该信息,但我不确定是否值得努力或是否会给您带来更多麻烦。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接