我从 API 调用收到了一个 json 响应,示例响应如下
{
"meta": {
"code": "200"
},
"data": [
{
"Id": 44,
"Name": "Malgudi ABC"
},
{
"Id": 45,
"Name": "Malgudi, DEF"
}
]
}
我正在尝试从中创建对象列表,我为此编写的代码是
private static List<TPDetails> getListOfTpDetails(ResponseEntity<?> responseEntity){
ObjectMapper objectMapper = new ObjectMapper();
List<TPDetails> tpDetailsList = objectMapper.convertValue(responseEntity.getBody().getClass(), new TypeReference<TPDetails>(){});
return tpDetailsList;
}
TPDetails 对象是这样的
public class TPDetails {
int Id;
String Name;
}
我使用的代码导致
java.lang.IllegalArgumentException: Unrecognized field "meta" (class com.sbo.abc.model.TPDetails), not marked as ignorable (2 known properties: "Id", "Name"])
at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: com.sbo.abc.model.TPDetails["meta"])
我想转换列表中的上述 JSON 响应
List<TPDetails> abc = [
{"Id": 44, "Name": "Malgudi ABC"},
{"Id": 45,"Name": "Malgudi DEF"}
]
任何帮助将非常感激。提前致谢
最佳答案
再创建 2 个类,例如
public class Temp {
Meta meta;
List<TPDetails> data;
}
public class Meta {
String code;
}
现在将此 json 转换为 Temp 类。
Temp temp = objectMapper.convertValue(responseEntity.getBody().getClass(), new TypeReference<Temp>(){});
更新:
确保 responseEntity.getBody()
返回您上面提到的确切的 Json 字符串。
Temp temp = objectMapper.readValue(responseEntity.getBody(), new TypeReference<Temp>(){});
关于java - 解析 JSON 并转换为对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55415382/