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

时间:2015-09-21 12:32:15

标签: java json jackson iterable

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

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

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"
    }
]

1 个答案:

答案 0 :(得分:3)

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

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