【问题标题】:JSON with duplicate key names losing information when parsed具有重复键名的 JSON 在解析时会丢失信息
【发布时间】:2012-09-20 22:41:57
【问题描述】:

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

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 只保留一个 参数 而丢弃其他的。

【问题讨论】:

    标签: json groovy


    【解决方案1】:

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

    它应该是一个参数数组。

    这样,

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

    【讨论】:

    • 好。这是我认为会更好的格式,也是我们将使用的格式。解析得很漂亮。
    猜你喜欢
    • 2021-10-04
    • 2013-08-09
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多