将多个 json 结果转换为可迭代的

Convert multiple json results to iterable

我正在尝试将 json 结果映射到我的 class 实例的 Iterable。

如果我得到 1 个对象结果,我会使用以下方法将其从 JSON 转换为 class 实例:

private ObjectReader personReader = null;
private ObjectReader getPersonReader() {

    if (personReader != null) return personReader;

    ObjectMapper mapper = new ObjectMapper();
    return personReader = mapper.reader(Person.class);
}
public Person response2Person(ResponseEntity<String> response) {
    try {
        return getPersonReader().readValue(response.getBody());
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

我的 getPersonsReader 方法应该如何转换包含多个结果的 JSON 字符串?

public Iterable<Person> response2Persons(ResponseEntity<String> response) {
    try {
        return getPersonsReader().readValue(response.getBody());
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

JSON 字符串如下所示:

[
    {
        "firstname": "Foo",
        "lastname": "Bar"
    },
    {
        "firstname": "Elvis",
        "lastname": "Presley"
    }
]

您可以使用 TypeReference 对参数化类型进行编译时引用:

mapper.reader(new TypeReference<List<Person>>() {});