java - 我需要用杰克逊将 JSON 数组反序列化为 HashMap
问题描述
我有一个需要反序列化为 HashMap 的 json 文件。
我需要一个 {name, HashMap<valuename, value>} 类型的 HashMap
示例:{aaa={value1=111, value2=222, value3=333}, bbb={value1=444, value2=555, value3=666}}
不幸的是,我是 json 和 jackson 的新手。
先感谢您。
这是我的json
[
{
"name": "aaa",
"values" : {
"value1" : 111,
"value2" : 222,
"value3" : 333
}
},
{
"name": "bbb",
"values" : {
"value1" : 444,
"value2" : 555,
"value3" : 666
}
}
]
和我的课:
public class Elements {
@JsonProperty("name")
String name;
@JsonProperty("values")
Values values;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Values getValues() {
return this.values;
}
public void setValues(Values values) {
this.values = values;
}
}
public class Values {
@JsonProperty("value1")
int value1;
@JsonProperty("value2")
int value2;
@JsonProperty("value3")
int value3;
public int getValue1() {
return this.value1;
}
public void setValue1(int value1) {
this.value1 = value1;
}
public int getValue2() {
return this.value2;
}
public void setValue2(int value2) {
this.value2 = value2;
}
public int getValue3() {
return this.value3;
}
public void setValue3(int value3) {
this.value3 = value3;
}
}
解决方案
只需将其作为实例读取并将其List
收集Map
到新的Map
反序列化过程后:
List<Map<String, Object>> listOfMaps = mapper.readValue(json, new TypeReference<List<Map<String, Object>>>() {});
Map<String, Object> desiredMap = listOfMaps.stream().collect(HashMap::new,
(result, map) -> result.put(map.get("name").toString(), map.get("values")),
(existing, replacement) -> { });
推荐阅读
- python - 循环浏览谷歌云存储中的子目录
- java - 深拷贝 vs 浅拷贝 vs 参考拷贝
- oauth - 代币分发给未知方
- javascript - datatable select all filtered data not reflecting in UI
- angular - 如何让子数据绑定采用字符串而不是父主机属性?
- javascript - 使用css调整窗口大小时,如何始终在同一行上制作文本和图像?
- javascript - Laravel - 在前端显示的背包多图像
- java - BitcoinJ walletTemplate P2WPKH 发送付款不起作用
- haskell - Haskell 函数在给定整数列表的情况下创建整数二叉搜索树
- prolog - 如何在 Prolog 中制作迷宫?