Свести карту Java, которая содержит вложенные карты, а также в одну карту

У меня есть Java Map<String, Object>, полученная из JacksonconvertValue(CustomType, new TypeReference<Map<String, Object>>() { }).

CustomType иметь вложенные объекты, которые также могут быть сложными — и они могут точно так же содержать другие.

Я пытаюсь найти библиотеку, чтобы сгладить эту Java Map во что-то вроде этого:

# This would be a Map<String, Object>
root_field1: value1
root_field2: value2
nested1.field1: value3
nested1.field2: value4
nested2.field1: value5
nested2.field2: value6
root_field3: value7

Проблема, с которой я столкнулся, заключается в том, что мне нужно будет использовать JSONPath позже, чтобы обновить некоторые из этих значений в механизме постоянства, поэтому я предпочитаю иметь все в коллекции, потому что ее легче перемещать, чем Maps.

Я пытался реализовать это с помощью Stream API, но это очень быстро становится беспорядочным — то же самое с рекурсией. Интересно, есть ли библиотека, чтобы сделать это простым и простым способом... потому что до сих пор я ничего не нашел.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать Json Map Flattener (Spring Vault): -

    final Map<String, Object> map = new HashMap<>(); // your original map
    Map<String, String> keyMap = JsonMapFlattener.flattenToStringMap(map);
    //Input

    {"key": {"nest": 1}, "key2": ["1", "2"] }

    //Output

    key.nest=1
    key2[0] = "1"
    key2[1] = "2"

Другие вопросы по теме