Разбор массива массивов JSON в Groovy

У меня есть следующая строка из ответа REST JSON:

[
   {
      "uid":10512213,
      "name":"Bob"
   },
   {
      "uid":7208201,
      "name":"John"
   },
   {
      "uid":10570,
      "name":"Jim"
   },
   {
      "uid":1799657,
      "name":"Sally"
   }
]

Определение ответа остальных относится к Facebook: FB REST Link

Я использую Google App Engine + GAELYK, который работает в Jetty.

Каков наилучший способ преобразования приведенного выше в массив из карт в Groovy на сервере. (Это, вероятно, должно было бы пройти через ответ)

Я ищу что-то легкое, что не включает много библиотек. (У меня нет maven)

Ответ 1

EDIT: Groovy, так как 1.8.0 имеет встроенный JsonSlurper:

import groovy.json.JsonSlurper

// Example Response Data
def restResponse = '[{"uid":10512213, "name":"Bob"},{"uid":7208201, "name":"John"},{"uid":10570, "name":"Jim"},{"uid":1799657, "name":"Sally"}]'

// Parse the response
def list = new JsonSlurper().parseText( restResponse )

// Print them out to make sure
list.each { println it }

Старый ответ ниже:

Использовать JsonSlurper...

Пример script для чтения этого ответа:

@Grab('net.sf.json-lib:json-lib:2.3:jdk15')
import net.sf.json.groovy.JsonSlurper

// Example Response Data
def restResponse = '[{"uid":10512213, "name":"Bob"},{"uid":7208201, "name":"John"},{"uid":10570, "name":"Jim"},{"uid":1799657, "name":"Sally"}]'

// Parse the response
def list = new JsonSlurper().parseText( restResponse )

// Print them out to make sure
list.each { println it }

Выводится:

[uid:10512213, name:Bob]
[uid:7208201, name:John]
[uid:10570, name:Jim]
[uid:1799657, name:Sally]

Как вы можете видеть, list - это список карт, поэтому, если вам просто нужен список имен, например, вы можете просто сделать:

def names = list.name

Чтобы использовать это в своем приложении Gaelyk, вам нужно просто скачать json-lib-2.3-jdk15.jar отсюда и сделать что-то аналогично (без @Grab тогда, поскольку у вас будет банка в вашей папке WEB-INF/lib.

- редактировать -

Оглядываясь, нашел эту страницу, показывающую зависимости для json-lib

@Grab в тесте script делает много фоновой работы для вас

Ответ 2

Массивы JSON начинаются с символа [ и заканчиваются символом ]. Объект JSON начинается с { и заканчивается на }.

Если вы перейдете на JSON.org, вы можете скачать JSONArray.java. Используйте это для создания массива JSON. Затем вы перебираете массив for (int i = 0; i < array.length(); i++) и извлекаете каждый объект JSON, вызывая array.getJSONObject(i);, который возвращает JSONObject. Оттуда получите соответствующее значение атрибута, например. long uid = json.getLong("uid");

Надеюсь, что это поможет.