簡體   English   中英

在Groovy中解析JSON數組的數組

[英]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)

編輯:從1.8.0開始Groovy有一個集成的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 ......

讀取該響應的示例腳本將是:

@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夾。

- 編輯 -

環顧四周,發現這個頁面顯示了 json-lib 的依賴關系

測試腳本中的@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM