如何使用groovy将json完全转换为键值对 [英] how to convert json into key value pair completely using groovy

查看:352
本文介绍了如何使用groovy将json完全转换为键值对的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆