[英]Parsing array of JSON arrays in Groovy
我有一個來自REST JSON響應的以下字符串:
[
{
"uid":10512213,
"name":"Bob"
},
{
"uid":7208201,
"name":"John"
},
{
"uid":10570,
"name":"Jim"
},
{
"uid":1799657,
"name":"Sally"
}
]
其余的響應定義來自Facebook: FB REST Link
我正在使用在Jetty中運行的Google App Engine + GAELYK。
在服務器上將上述內容轉換為Groovy中的地圖 數組的最佳方法是什么? (這可能需要通過回復遞歸)
我正在尋找一些不包含大量庫的簡單方法。 (我沒有maven)
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 ......
讀取該響應的示例腳本將是:
@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
是一個Maps列表,所以如果您只想要一個名稱列表,您可以這樣做:
def names = list.name
要在你的Gaelyk應用程序中使用它,你應該只需從這里下載json-lib-2.3-jdk15.jar並做類似的事情(不用@Grab,因為你的WEB-INF/lib
有jar夾。
- 編輯 -
測試腳本中的@Grab為您做了很多后台工作
JSON數組以[
字符並以]
字符結尾開頭。 JSON對象以{
開頭,以}
結尾。
如果你去JSON.org,你可以下載JSONArray.java。 用它來創建一個JSON數組。 然后循環遍歷數組for (int i = 0; i < array.length(); i++)
並通過調用array.getJSONObject(i);
檢索每個JSON對象array.getJSONObject(i);
返回JSONObject
。 從那里,獲取相應的屬性值,例如long uid = json.getLong("uid");
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.