2014-02-25 2 views
1

안녕하세요 내가 끝내멋져요/Grails의 : 이전에 생성 된 jsons

List relClinicStatementList = [] 
      for (BloodTestRow row in BTList){ 
       def jsonListBuilder = new groovy.json.JsonBuilder() 
       def internalJson = jsonListBuilder{ 
         'targetRelationshipToSource' { 
          'code' 'part-of' 
          'codeSystem' 'MG' 
         } 
         'observationResult'{ 
          'observationFocus'{ 
           'code' "${row.exam}" 
           'codeSystem' 'mobiguide' 
           'displayName' "${row.exam}" 
          } 
          'observationValue' { 
           'physicalQuantity' { 
            'value' "${row.value}" 
            'unit' "${row.unit}" 
            } 
          } 
         } 
        } 
       println jsonListBuilder.toPrettyString() 
       relClinicStatementList.add(internalJson) 

      } 

에서 JSON 개체의 목록과 toPrettyString을() 메소드가 제대로 JSON 구조를 보여줍니다 만들려고하고를 덮어 쓰지 않고 루프 내부 JsonBuilder 선언 I 필요. 그러나 루프의 끝 부분에있는 경우이 같은 목록에서 내가 가지고있는 모든 항목을 인쇄하려고 :

    for (JsonBuilder entry in relClinicStatementList){ 
        println entry.toPrettyString() 
        } 

내 relClinicalStatement 목록 내부의 모든 요소가 내가 만든 최신 동일하게 얻을. .. 각 루프에서 새로운 JsonBuilder를 선언하면이 동작을 막을 수있는 느낌이 들었습니다. 뭔가 빠졌습니까? 나는 자바에서 왔음을 인정하고 그루비 클래스를 사용하면이 동작이 내가 예상했던 것과 약간 다르게 느껴진다. 이 문제를 어떻게 해결할 수 있습니까? 사전

+0

internalJson 대신 relClinicStatementList에 jsonListBuilder를 추가하지 마십시오. – cfrick

+0

@cfrick, 나는 두 가지 해결책을 모두 시도했다. (internalJson 대 jsonListBuilder 추가하기를 추가했다.) 그러나 이것은 문제를 해결하지 못했다. 여전히 목록에는 내가 만든 마지막 json과 같은 모든 객체가 있습니다. – neneItaly

답변

1

난 당신이보고있는 동작을 재현 할 수없는,하지만 문제는 내가 internalJson 당신이 그것을 (이것은 2 개 폐쇄의 목록입니다) 무슨 생각이라고 생각하지 않는 생각의

감사합니다.

당신은 당신의 코드를 변경하는 경우

: 예상대로

List relClinicStatementList = btList.collect { row -> 
    new groovy.json.JsonBuilder({ 
     targetRelationshipToSource { 
      code  'part-of' 
      codeSystem 'MG' 
     } 
     observationResult { 
      observationFocus { 
       code  "$row.exam" 
       codeSystem 'mobiguide' 
       displayName "$row.exam" 
      } 
      observationValue { 
       physicalQuantity { 
        value "$row.value" 
        unit "$row.unit" 
       } 
      } 
     } 
    }) 
} 

relClinicStatementList.each { entry -> 
    println entry.toPrettyString() 
} 

그것은 작동합니까?

+0

감사합니다. 당신이 higlited 정확히 요점이었다. 리스트를 만드는 나의 방법은 실제로 closure (나는 원한 것이 아닌)의리스트를 만들었다. 나는 여전히 grails와 그 객체와 구조에 대한 세부 사항을 잡아야한다. (Java에서 closure와 같은 것은 없다. :))하지만 이것은 분명 도움이되었다. 감사합니다. – neneItaly