展平 Java 包含嵌套地图以及单个地图的地图

Flatten Java Map that contains nested Maps as well in single Map

我有一个 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 来实现它,但它很快就会变得混乱 — 与递归一样。我想知道是否有一个库可以以简单、直接的方式完成此任务...因为到目前为止,我还没有找到任何东西。

您可以使用 Json 地图拼合器(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"