【问题标题】:Convert multiple json results to iterable将多个 json 结果转换为可迭代
【发布时间】:2015-12-18 03:49:05
【问题描述】:

我正在尝试将 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"
    }
]

【问题讨论】:

    标签: java json jackson iterable


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-12-13
      • 2023-03-25
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多