当前位置: 首页 > 面试题库 >

在Groovy中解析JSON数组的数组

孟修竹
2023-03-14
问题内容

我从REST JSON响应中获得以下字符串:

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

其余响应定义来自Facebook:FB REST链接

我正在使用在Jetty中运行的Google App Engine + GAELYK。

在服务器上的Groovy 中将上述内容转换为 地图* 数组 的最佳方法是什么。(这可能必须通过响应来递归*

我正在寻找不包含很多库的简单东西。(我没有行家)


问题答案:

编辑:自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,因为您将jar保存在WEB-INF/lib文件夹中。

- 编辑 -

环顾四周,发现此页面显示 json-lib 的依赖项

  • 雅加达公共语言2.4
  • 雅加达Commons-Beanutils 1.7.0
  • 雅加达Commons-Collections 3.2
  • ssh Linuxs
  • ezmorph 1.0.6

测试脚本中的@Grab为您做了很多后台工作



 类似资料:
  • 问题内容: 我正在使用一个API,该API返回如下所示的JSON 在Swift中,我使用两个函数来获取并解析JSON 然后我用 可以很好地解析JSON。当我打印出 我得到了数组的所有内容。但是,我无法访问每个单独的索引。我很肯定这是一个数组,因为我之间 返回正确的长度。但是,如果我尝试通过使用访问单个索引 XCode关闭语法高亮显示并给我以下信息: 并且代码将无法编译。 这是XCode 6的错误,

  • 问题内容: 如何解析JSON ARRAY以获取没有[]和“”的数据 这是json 我的代码: 输出:[“ 23,Damansara-蒲种高速公路(Bandar Puchong Jaya)”,“ 47100 Puchong Batu Dua Belas,雪兰莪,”马来西亚“] 我只想要数据。如: 23,Damansara-Puchong Hwy(Bandar Puchong Jaya),47100

  • 问题内容: 我有类似以下的输出: 我想获取每个城市的名称,该怎么办? 编辑: 上面的方法似乎无效,没有输出任何值。 问题答案: 也会在提取后为您解析JSON,因此从那时起,您将使用简单的Javascript数组(在JSON中标记为数组)。该文档还包含有关如何处理获取的数据的示例。 您可以使用for循环获取数组中的所有值: 检查您的控制台以查看输出(Chrome,Firefox / Firebug

  • 问题内容: 嗨,我正在尝试从该 URL 解析json数组。json数组如下所示。 我在我的java类中这样做 但这不起作用,有人可以帮我解析我的json数组吗? 问题答案: 您将需要根据您在此处发布的用于解析为Json的字符串在当前代码中进行两次更改: 首先: 将方法的返回类型更改为并从中返回,而不是 例如: 第二: 更改代码以获取价值 :

  • 问题内容: 我试图从JSON数组中获取每个JSON对象。我通过HTTP发布获得此数据。 我知道我的数据是什么样的: 我的示例代码和结构如下所示: 我不确定如何遍历JSON数组并获取JSON对象,然后仅使用JSON对象。 问题答案: 试试这个作为您的结构, 您的名称不正确,顶层名称也不正确。解码为a之后,您可以遍历切片以获取每个切片

  • 问题内容: 输出: 我有api调用返回的结果,它就像对象数组(json数组)的复杂格式。我需要通过golang解析该结果,我该如何实现?以下数据是我的结果,它是从api调用获取的。 问题答案: 您仅错过了一点:您需要导出结构的字段: 它将起作用(在Go Playground上尝试): 请注意,JSON文本包含带有小写字母文本的字段名称,但是包足够“聪明”以匹配它们。如果它们完全不同,则可以使用st