获取JSON中每个字段的名称

时间:2015-06-02 13:07:49

标签: json parsing grails

我正在尝试解析Grails中的随机JSON文件。

首先,我需要获取每个字段的名称

例如,下面给出了JSON文件,

{
    "abbreviation": "EX",
    "guid": "1209812-1l2kj1j-fwefoj9283jf-ae",
    "metadata": {
      "dataOrigin": "Example"
    },
    "rooms": 
    [
    ],
    "site": {
      "guid": "1209812-1l2kj1j-fwefoj9283jf-ae"
    },
    "title": "Example!!"
}

我想找出JSON文件的结构(可能是键列表),例如我想保存键列表,例如'abbreviation','guid','metadata','rooms','来自此JSON文件的site','title'。

我该怎么做?

(我们需要密钥的名称才能获取该密钥的值,因此使用任意结构的JSON文件,我需要先找出密钥)

2 个答案:

答案 0 :(得分:0)

您可以尝试以下代码

def filePath = "JSONFILE.json"
def text = new File(filePath).getText()
def json = JSON.parse(text)                     
def jsonKeys = json.collect{it.key}
println(jsonKeys)

这将打印所有json键

答案 1 :(得分:0)

根据dmahaptro的评论,我想出了如何获取JSON对象中的所有密钥。

这是我编写的一个简单的示例代码来测试它

String jsonFile = new JsonSlurper().parseText(new URL(path to the json file).text)
JSONArray jsonParse = new JSONArray(jsonFile)

int len = jsonParse.length()
def names = []
def keys = []
(0..len-1).each {
    JSONObject val = jsonParse.getJSONObject(it)
    int numKeys = val.length()
    names = val.names()
    keys = val.keySet()
    (0..numKeys-1).each {
        def field = names[it]
        println field +" : " + val."${field}"
    }
}

这将打印给定JSON文件的键:值对。