java - 将 JSON 读取为对象列表 - Jackson
问题描述
我有一个如下的 Json 字符串
{
"EngineData": [
{
"make": "Toyota",
"transmission": "Manual",
"fuel": "Petrol"
},
{
"make": "GMC",
"transmission": "Auto",
"fuel": "Petrol"
},
{
"make": "Honda",
"transmission": "Manual",
"fuel": "Petrol"
}
]
}
我有如下定义的 POJO
@JsonIgnoreProperties(ignoreUnknown = true)
public class EngineData implements Serializable {
@JsonProperty("make")
private String make;
@JsonProperty("transmission")
private String transmission;
@JsonProperty("fuel")
private String fuel;
//getters and setters
}
我想读它List<EngineData>
我写了以下内容,但它没有将字符串读取到 EngineData 列表
List<EngineData> engineDataList =null;
ObjectMapper mapper = new ObjectMapper();
engineDataList = mapper.readValue(myJsonString, new TypeReference<List<EngineData>>() {
});
不知道这有什么问题
解决方案
您的 JSON 对应于一个对象,例如:
class CustomObject {
List<EngineData> EngineData;
//...
}
它将与下面的 JSON 一起使用:
[
{
"make": "Toyota",
"transmission": "Manual",
"fuel": "Petrol"
},
{
"make": "GMC",
"transmission": "Auto",
"fuel": "Petrol"
},
{
"make": "Honda",
"transmission": "Manual",
"fuel": "Petrol"
}
]
如果您被迫使用此 JSON,我认为您将需要编写自定义反序列化器。参看。https://www.baeldung.com/jackson-deserialization
推荐阅读
- c - 写入文件。创建文件但不写入文件
- python - 使用资源模块导入数据文件
- android - 将颤振项目发布到 Play 商店后,Firebase Auth 登录不起作用
- sql - 在分层查询中确定 (root), (root+1), (root+2)
- flowtype - 为反应组件包装子组件,该组件的子组件仅限于某些类型
- gnuplot - gnuplot pm3d 将第二列映射为颜色渐变
- html - 如何在html中访问上一个目录
- scala - scala.util.Success 和 akka.actor.Status.Success 之间的主要区别?
- reactjs - ID 不能表示非字符串和非整数值
- python - 我应该如何让我的不和谐机器人欢迎某人?