java - Jackson - Json 字符串到 Java 类列表
问题描述
我正在尝试使用 Jackson 将 JSON 字符串映射到 Java 类。
public class ChartData {
List<String> xAxis=new ArrayList<String>();
List<String> yAxis=new ArrayList<String>();
List<String> zAxis=new ArrayList<String>();
String type;
public ChartData() {
}
public ChartData(String type, List<String> yAxis, List<String> zAxis) {
this.type = type;
this.yAxis = yAxis;
this.zAxis = zAxis;
}
我试过的代码:
List<ChartData> emp = new ArrayList<>();
String o2 ="[{\"type\": \"2\", \"yAxis\": [\"11\"], \"zAxis\": [\"8\"]}, {\"type\": \"3\",
\"yAxis\": [\"17\", \"13\", \"12\"], \"zAxis\": [\"14\", \"13\", \"12\"]}]";
ObjectMapper mapper = new ObjectMapper();
data= (List<ChartData>) mapper.readValue(o2, ChartData.class);
return data;
但是,我收到以下错误:
无法在 [Source: [{"type": "2", "yAxis": ["11"], "zAxis": ["8"]}, {"type ": "3", "yAxis": ["17", "13", "12"], "zAxis": ["14", "13", "12"]}]; 行:1,列:1]
我的错误在哪里?
解决方案
有一种特定的方法可以反序列化到杰克逊列表中:
List<ChartData> data = mapper.readValue(o2 , new TypeReference<List<ChartData>>(){});
在您的代码中,您在转换中也有类型不匹配。您正在使用mapper.readValue(o2, ChartData.class)
,但您正在将其转换为List<ChartData>
.
要保持基本类型转换(不带TypeReference
),您可以通过以下方式将 json 反序列化为数组:
ChartData[] data = mapper.readValue(o2 , ChartData[].class);
如果需要,然后将其转换为列表。
推荐阅读
- python - 使用 ThreadPoolExecutor 跨多个页面抓取
- javascript - 如何将此字符串转换为 javascript 数组?
- java - spring boot 安全配置不正确
- wordpress - 为 wordpress 插件存储 FTP 密码
- python - Python 使用字典或列表作为用户输入
- ionic-framework - 缺少“可观察”类型的以下属性
- python - 如何合并和交错 NumPy 对象数组的列
- arrays - 从 LUA 中的文本文件生成列表/数组
- python - TypeError:列表索引必须是整数或切片,而不是图像处理时的元组错误
- coldfusion - 更新列表以在 stat 和 end 处使用逗号