2

そのため、戻って誰かに JSON を修正するように伝えるか、自分の何が間違っているのかを突き止める必要があります。JSON は次のとおりです。パラメーターが 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}]

パラメータを 1 つしか取得できないのはなぜですか? 残りの 2 つはどこにありますか。JSON は 1 つのパラメーターのみを保持し、他のパラメーターを破棄するようです。

4

1 に答える 1

5

JSON の形式が正しくありません。同じ階層内に重複するキーがあってはなりません。そうしないと、互いにオーバーライドされます。

パラメータの配列である必要があります。

このような、

String j= '''{
 "jobname" : "test",
 "parameters" : [
 {"name":"maxErrors", "value":"0"},
 {"name":"case", "value":"lower"},
 {"name":"mapTable", "value":"1"}
 ]
} 
于 2012-06-26T05:31:50.053 に答える