我正在尝试解析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文件,我需要先找出密钥)
答案 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文件的键:值对。