我试图将json转换为map作为键值对我有一个方法JsonSlurper()给我键值对但我的查询是我有一个json如下。
{"Result":"null",
"gbet":{"Qpet":[
{"msg":"MSG","over":"N","repair":[{"notification":null,"sce":"1","repair1":"CA","repairDes":null,"ran":1},
{"rep":"dvr"}],
{"msgger":"MSGwe","overw":"Ner"}]
}
如何使用每个键值对在单个地图中获取所有内容 我这样做
def slurper = new JsonSlurper().parseText(str)
log.info("sulpher"+slurper)
def keys=slurper.keySet();
log.info('keys'+keys)
但它不适合我 我希望每个键和值对作为一个单独的字段。
答案 0 :(得分:0)
根据您提供的JSON字符串;它只有两个父键,即Result和gbet。 gbet中有其他节点。您必须修复字符串或编写自己的方法来展平字符串。没有开箱即用的功能可以实现您的要求。
答案 1 :(得分:0)
您必须实施自己的展平方法。例如:
Map flattenMap(Map json) {
def result = [:]
json.each { k, v ->
if (v instanceof Map) {
result << flattenMap(v)
} else if (v instanceof Collection && v.every {it instanceof Map}) {
v.each { result << flattenMap(it) }
} else {
result[k] = v
}
}
result
}
这个例子正在使用递归,所以如果嵌套得太深,它就会溢出。它不适用于您的样本,因为它不是有效的json。