2014-12-09 2 views
0

내 Groovy 코드에서 두 변수를 선언했습니다.Groovy의 JsonBuilder로 두 요소 객체를 만들려면 어떻게해야합니까?

results은 맵의 배열입니다. 여기에는 SQL 조회에서 리턴 된 행 목록이 들어 있습니다.

overall은지도입니다. 그것은 개별 SQL 쿼리의 단일 행을 나타냅니다.

이 두 변수를 하나로 결합하여 전체를 JSON으로 출력하고 싶습니다. 결국, 나는 이런 식으로 뭔가보고 싶지 :

{"data":[{"results":"array"}],"overall":{"overall":"map"}} 

여기 내가 사용하려고 해요 코드입니다,하지만 그것은 작동하지 않습니다

def json = new groovy.json.JsonBuilder() 
def finalJSON = json { 
    data results 
    overall overall 
} 

return json.toString() 

을하지만이 작동하지 않습니다 나는 두 변수 resultsoverall 그들에 올바른 데이터를 확인할 수 있습니다

groovy.lang.MissingPropertyException: No such property: call for class: groovy.sql.GroovyRowResult 

: ... 다음과 같은 예외가 발생합니다. JsonBuilder 구문을 이해하지 못하고있는 것 같습니다.

좋아
import groovy.json.* 

def r = [[l:1],[l:2]] 
def o = [over:1,all:2] 

def json = new JsonBuilder() 

json { 
    data r 
    overall o 
} 
println json.toPrettyString() 

def m = [data: r, overall: o] 

println JsonOutput.prettyPrint(JsonOutput.toJson(m)) 
+0

어디에서 오류가 발생합니까? 정확히 결과와 전반적인 것은 무엇입니까? 내가 몇 가지 SQL 결과. 하지만 지금까지 어떻게 변환 했습니까? – cfrick

답변

0

아래 가능한 솔루션을 찾아보십시오. 그루비 (Groovy)는 당신이 지정하는 키와 같은 값을 가진 변수 이름을 사용할 수 없다는 점에서 어리 석다. 내가 overallData에 그 변수를 변경하고 모든 일을 시작

overall overall 

: 그래서 진짜 문제는 읽어 줄을이었다.

+1

아니요, 루트가 필요하지 않습니다. 당신의 예제에서'all '을 제거하면 여전히 작동하며 결과는 OP가 원하는 것입니다. 거기 빌더 (toString 대 실제 데이터)로 전송 된 데이터와 함께 뭔가가 잘못 – cfrick

+0

감사합니다 @cfrick, 그것은 작동합니다! 아마 어딘가에서 실패했습니다. – Opal