展平 Java 包含嵌套地图以及单个地图的地图
Flatten Java Map that contains nested Maps as well in single Map
我有一个 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 地图拼合器(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"
我有一个 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 地图拼合器(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"