2012-06-29 59 views
1

有沒有在Groovy中使用JSONBuilder嵌套JSON數組的方法?更明確地說,我有一個Grails應用程序,需要呈現這樣的事情:在Grails中使用嵌套數組的Groovy JSONBuilder

{ 
    "event": { 
     "type": "1.0", 
     "templates": [ 
      { 
       "template":{ 
        "window": { 
         "type1": "id-1", 
         "type2": "id-2" 
        }, 
        "object": { 
         "id-1": { 
          "type": "classA", 
          "others": [ 
           { 
            "var": "thing1", 
            "mixed": "no" 
           } 
          ] 
         }, 
         "id-2": { 
          "type": "classB", 
          "others": [ 
           { 
            "var": "thing1", 
            "mixed": "yes" 
           } 
          ] 
         } 
        } 
       } 
      } 
     ] 
    } 
} 

我有一些麻煩我的Grails控制器此使用render功能以及在服務明確使用JSONBuilder建設。

除了「模板」數組中的「模板」對象沒有渲染之外,一切似乎都奏效。以下是正在進行渲染的代碼:

render(contentType: "text/json") { 
    event { 
     type = "1.0" 
     templates = array { 
      template = { 
       window = { 
        type1 = "id-1" 
        type2 = "id-2" 
       } 
       object = { 
        "${ 'id-1' }" { 
         type = "classA" 
         others = array { 
          otherArr(var:"thing1", mixed:"yes") 
         } 
        } 
        "${ 'id-2' }" { 
         type = "classB" 
         others = array { 
          otherArr(var:"thing1", mixed:"yes") 
         } 
        } 
       } 
      } 
     } 
    } 
} 

回答

1

您錯過了array閉包內的關卡。試試這個:

templates = array { 
    item { 
    template = { 
     window = { 
     // ... 
+0

這似乎並沒有爲我工作。我收到以下錯誤消息:'錯位鍵:KEY的預期模式,但是是OBJECT。 Stacktrace如下: 消息:錯位鍵:KEY的預期模式,但是是OBJECT 行|方法 - >> 199 |價值在grails.converters.JSON' – anthonylawson

+0

對不起,我的錯誤。我原來的建議沒有奏效。經過多一點實驗後,我想出了一些有用的東西,並相應地編輯了我的答案 –