Как конвертировать карту карт в POJO, используя Джексон - PullRequest
3 голосов
/ 10 апреля 2019

У меня есть Карта, которая содержит другую Карту следующим образом:

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

Как я могу использовать Джексона для преобразования его в 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);

    }

Это класс Indicators:

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

Результатами этого преобразования является: null

Вот как должна выглядеть карта, просто пример:

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

1 Ответ

3 голосов
/ 10 апреля 2019

Попробуйте использовать приведенный ниже фрагмент кода для преобразования вашего объекта MAP в строку JSON.

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

try {
    jsonStr = mapperObj.writeValueAsString(<<MAP OBJECT>>);
}
 catch (IOException e) { 
 e.printStackTrace();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...