简体   繁体   English

如何使用Jackson将地图地图转换为POJO

[英]How to convert map of maps to POJO using Jackson

I have a Map which contains another Map as follows: 我有一个Map,其中包含另一个Map,如下所示:

private ObjectMapper mapper;
private Map<String,Map<String,Long>> indicatorsList;

How can I use Jackson in order to convert it to POJO? 我如何使用Jackson将其转换为POJO?

This is what I was trying to do: 这就是我想要做的事情:

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);

    }

This is Indicators class: 这是指标类:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Indicators{
    private Map<String,Map<String,Long>> indicatorsList;
}

The results of this conversion is: null 此转换的结果为:null

This is how the map should look like, just an example: 这就是地图的样子,只是一个例子:

    "indicatorsList": {
        "Bulb": {
          "Green": 2,
          "Red": 3
        },
        "Led": {
          "Red": 1
        }
}

Try to use the below code snippet to convert your MAP object the JSON string. 尝试使用以下代码段将您的MAP对象转换为JSON字符串。

ObjectMapper mapperObj = new ObjectMapper();
String jsonStr = StringUtils.EMPTY;

try {
    jsonStr = mapperObj.writeValueAsString(<<MAP OBJECT>>);
}
 catch (IOException e) { 
 e.printStackTrace();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM