У меня есть Java Map<String, Object>
, полученная из Jackson
convertValue(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
позже, чтобы обновить некоторые из этих значений в механизме постоянства, поэтому я предпочитаю иметь все в коллекции, потому что ее легче перемещать, чем Map
s.
Я пытался реализовать это с помощью Stream API
, но это очень быстро становится беспорядочным — то же самое с рекурсией. Интересно, есть ли библиотека, чтобы сделать это простым и простым способом... потому что до сих пор я ничего не нашел.
Вы можете использовать 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"