2012-06-26 3 views
2

그래서 돌아가서 누군가에게 JSON을 수정해야한다고 말하거나 내가 뭘 잘못하고 있는지 알아야합니다.중복 된 키 이름을 가진 JSON이 구문 분석시 정보 유실

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

그리고 각각의 이름을 & 값을 얻기 위해 노력하고 있어요 다음은 JSON이며, 매개 변수 세 번 발생하는 것을 알 수 있습니다. 내 코드

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은 하나만 매개 변수만을 유지하고 나머지는 무시합니다.

답변

5

JSON 형식이 올바르지 않습니다. 동일한 계층 구조에 중복 키가 있어서는 안되며 서로 오버라이드 할 수 있습니다.

매개 변수의 배열이어야합니다. 이처럼

,

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

좋은. 이것은 내가 더 좋을 것이라고 생각한 형식이며 이것은 우리가 사용할 형식입니다. 아름답게 파싱합니다. – rtfminc

관련 문제