如何使用groovy将json完全转换为键值对 [英] how to convert json into key value pair completely using groovy
问题描述
我试图将json转换为键值对,所以我有一个方法JsonSlurper()可以给我键值对,但是我的查询是我有一个像下面这样的json.
i m trying to convert json into map as key value pair i have a method JsonSlurper() which give me the key value pair but my query is i have a json as bellow.
{"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"}]
}
如何在每个映射中获取每个键值对的所有内容 我正在这样做
how to get all the things in a single map with each key value pair i m doing like this
def slurper = new JsonSlurper().parseText(str)
log.info("sulpher"+slurper)
def keys=slurper.keySet();
log.info('keys'+keys)
但是它对我不起作用 我想每个键和值对作为一个单独的字段.
but its not working for me i want each key and value pair as a separate field.
推荐答案
您将必须实现自己的flatten方法.例如:
You will have to implement your own flatten method. For example:
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.
This example is using recursion so if it is nested too deeply it will overflow. It will not work on your sample because it is not valid json.
这篇关于如何使用groovy将json完全转换为键值对的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!