具有重复键名称的JSON在解析时丢失信息

时间:2012-06-26 04:15:18

标签: json groovy

所以要么我回去告诉别人他们应该修复他们的JSON,要么我需要找出我做错了什么。这是JSON,注意参数出现三次:

String j= '''{
    "jobname" : "test",
    "parameters" : {
    "parameter": {"name":"maxErrors", "value":"0"},
    "parameter": {"name":"case", "value":"lower"},
    "parameter": {"name":"mapTable", "value":"1"}
    }
} '''

我正在尝试获得每个名字和值。我的代码

def doc = new JsonSlurper().parseText(j)
def doc1 = doc.entrySet() as List
def doc2 = doc.parameters.entrySet() as List
println "doc1.size===>"+doc1.size()
println "doc1===>"+doc1
println "doc2.size===>"+doc2.size()
println "doc2===>"+doc2

我的结果:

doc1.size===>2
doc1===>[jobname=test, parameters={parameter={name=mapTable, value=1}}]
doc2.size===>1
doc2===>[parameter={name=mapTable, value=1}]

为什么我只得到一个参数?另外两个在哪里?看起来JSON只保留一个参数并丢弃其他参数。

1 个答案:

答案 0 :(得分:5)

JSON的格式不正确。在同一层次结构中不应存在重复键,否则它们将相互覆盖。

应该是一系列的参数。

像这样,

String j= '''{
 "jobname" : "test",
 "parameters" : [
 {"name":"maxErrors", "value":"0"},
 {"name":"case", "value":"lower"},
 {"name":"mapTable", "value":"1"}
 ]
}