如何使用 Jackson 将地图的地图转换为 POJO
How to convert map of maps to POJO using Jackson
我有一个地图,其中包含另一个地图,如下所示:
private ObjectMapper mapper;
private Map<String,Map<String,Long>> indicatorsList;
如何使用 Jackson 将其转换为 POJO?
这就是我想要做的:
public Map<String,Map<String,Long>> calculateIndicators(List<indicatorsDAO> events){
Map<String,Map<String,Long>> indicatorsCountersMap=
events.stream().collect(
Collectors.groupingBy(
indicatorsDAO::getType,
Collectors.groupingBy(
indicatorsDAO::getLight,
Collectors.counting())
)
);
return mapper.convertValue(indicatorsCountersMap,Indicators.class);
}
这是指标 class:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Indicators{
private Map<String,Map<String,Long>> indicatorsList;
}
本次转换的结果为:null
地图应该是这样的,只是一个例子:
"indicatorsList": {
"Bulb": {
"Green": 2,
"Red": 3
},
"Led": {
"Red": 1
}
}
尝试使用以下代码片段将 MAP 对象转换为 JSON 字符串。
ObjectMapper mapperObj = new ObjectMapper();
String jsonStr = StringUtils.EMPTY;
try {
jsonStr = mapperObj.writeValueAsString(<<MAP OBJECT>>);
}
catch (IOException e) {
e.printStackTrace();
}
我有一个地图,其中包含另一个地图,如下所示:
private ObjectMapper mapper;
private Map<String,Map<String,Long>> indicatorsList;
如何使用 Jackson 将其转换为 POJO?
这就是我想要做的:
public Map<String,Map<String,Long>> calculateIndicators(List<indicatorsDAO> events){
Map<String,Map<String,Long>> indicatorsCountersMap=
events.stream().collect(
Collectors.groupingBy(
indicatorsDAO::getType,
Collectors.groupingBy(
indicatorsDAO::getLight,
Collectors.counting())
)
);
return mapper.convertValue(indicatorsCountersMap,Indicators.class);
}
这是指标 class:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Indicators{
private Map<String,Map<String,Long>> indicatorsList;
}
本次转换的结果为:null
地图应该是这样的,只是一个例子:
"indicatorsList": {
"Bulb": {
"Green": 2,
"Red": 3
},
"Led": {
"Red": 1
}
}
尝试使用以下代码片段将 MAP 对象转换为 JSON 字符串。
ObjectMapper mapperObj = new ObjectMapper();
String jsonStr = StringUtils.EMPTY;
try {
jsonStr = mapperObj.writeValueAsString(<<MAP OBJECT>>);
}
catch (IOException e) {
e.printStackTrace();
}