将多个 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>>() {});
我正在尝试将 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>>() {});