2012-06-29 2 views
1

Есть ли способ встраивать массивы JSON с помощью JSONBuilder в Groovy? Точнее, у меня есть приложение Grails, что нужно, чтобы сделать что-то вроде этого:Groovy JSONBuilder с вложенным массивом в Grails

{ 
    "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

Это не работает для меня. Появляется следующее сообщение об ошибке: «Misplaced key: ожидаемый режим KEY, но был OBJECT. Stacktrace следует: Сообщение: Misplaced ключ: ожидаемый режим KEY, но был OBJECT Линия | Метод - >> 199 | Значение в grails.converters.JSON' – anthonylawson

+0

Извините, моя ошибка. Мое первоначальное предложение не сработало. После немного большего количества экспериментов я придумал что-то, что работает и отредактировал мой ответ соответственно –

 Смежные вопросы

  • Нет связанных вопросов^_^