2012-05-24 3 views
1

Новое в Groovy, и у меня проблемы с преобразованием массива в JSON. Вычисленный JSON должен иметь все значения из моего списка массивов, но он хранит только последний. Вот код:Groovy: Преобразовать массив в JSon

def arraylist = [["0",2],["1",8],["2",6],["3",8],["4",3]] 

def arraysize = arraylist.size() 

def builder = new groovy.json.JsonBuilder() 
builder ({ 
     cols([ 
       { 
        "id" "hours" 
        "label" "Hours" 
        "type" "string" 
       }, 
       { 
        "id" "visitor" 
        "label" "Visitors" 
        "type" "number" 
       } 
      ]) 

     rows([ 
       { 
         for(i in 0..< arraysize) 
         { 
         c([ 
          { 
           "v" arraylist[i][0] 
          }, 
          { 
           "v" arraylist[i][1] 
          } 
         ]) 
         }//for 

       } 
      ]) 
}) 

println builder.toPrettyString() 

Можно попробовать запустить код здесь: http://groovyconsole.appspot.com/

Ожидаемый результат здесь:

{ 
"cols": [ 
    { 
     "id": "hours", 
     "label": "Hours", 
     "type": "string" 
    }, 
    { 
     "id": "visitor", 
     "label": "Visitors", 
     "type": "number" 
    } 
], 
"rows": [ 
    { 
     "c": [ 
      { 
       "v": "0" 
      }, 
      { 
       "v": 2 
      } 
     ] 
    }, 
    { 
     "c": [ 
      { 
       "v": "1" 
      }, 
      { 
       "v": 8 
      } 
     ] 
    }, 
    { 
     "c": [ 
      { 
       "v": "2" 
      }, 
      { 
       "v": 6 
      } 
     ] 
    }, 
    { 
     "c": [ 
      { 
       "v": "3" 
      }, 
      { 
       "v": 8 
      } 
     ] 
    }, 
    { 
     "c": [ 
      { 
       "v": "4" 
      }, 
      { 
       "v": 3 
      } 
     ] 
    } 
] 
} 
+0

Вы пробовали «отдать arraylist as JSON» в свой контроллер? Вот несколько [пример] (http://manbuildswebsite.com/2010/01/29/rendering-json-using-grails-part-1-collections-testing-and-the-jsonbuilder/) –

+0

Можете ли вы привести пример результат, который вы ожидаете? Ваш код вводит в заблуждение ... –

+0

Редактировать вопрос - @tim_yates – Will

ответ

6

Нечто подобное, кажется, дает результат, который вы хотели:

def arraylist = [["0",2],["1",8],["2",6],["3",8],["4",3]] 

def builder = new groovy.json.JsonBuilder() 
builder { 
    cols([ 
    [ id: "hours", label: "Hours", type: "string" ], 
    [ id: "visitor", label: "Visitors", type: "number" ] ]) 

    rows(arraylist.collect { pair -> [ c: pair.collect { item -> [ v: item ] } ] }) 
} 

println builder.toPrettyString() 
Смежные вопросы