Groovy-添加新的嵌套键以Map

8fq7wneg  于 2022-09-21  发布在  其他
关注(0)|答案(1)|浏览(236)

我有两个json文件:

Json A:
 {
  "a": {
    "b": true,
    "c": {
      "d": "Hello"
    }
  }
}

Json B:
    {
      "a": {
        "c": {
          "e": "Sir"
        }
      }
    }

我正在将两个json对象转换为map:

MAP A: [a:[b:true, c: [d: hello]]
MAP B: [a:[c: [e: Sir]]

我需要将元素e从json B添加到Json A中的相同位置

预期结果为:

Merged MAP : [a:[b:true, c: [d: hello, e: Sir]]

我有需要作为点路径字符串(A.C.E)添加的密钥

如何将点字符串路径添加到现有Map?

谢谢

qyzbxkaa

qyzbxkaa1#

好的,假设您知道要添加的内容以及字符串形式的路径‘A.C.E’:下面这样的代码应该可以完成任务:

mapA = [a:[b:true, c: [d: 'hello']]]
mapB = [a:[c: [d: 'Sir']]]
path = 'a.c.e'
///////////////////////

allElems = (path.split("\.") as List)
allButLast = allElems[0..-2] // [a, c]
last  = allElems[-1]         // e

mapToAddElemTo =
    allButLast        .stream()
                      .reduce(mapA, { currMap, pathElem -> currMap[pathElem] } )

mapToAddElemTo[last] = 'Sir'
println(mapA) // prints [a:[b:true, c:[d:hello, e:Sir]]]

相关问题