ruby-on-rails – 使用Ruby搜索JSON响应

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 使用Ruby搜索JSON响应前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用 Ruby脚本与应用程序API进行接口,返回的结果是JSON格式的.例如:
{
  "incidents": [
    {
      "number": 1,"status": "open","key": "abc123"
    }
    {
      "number": 2,"key": "xyz098"
    }
    {
      "number": 3,"status": "closed","key": "lmn456"
    }
  ]
}

我正在寻找一个特定的“键”值(在本示例中为yzx098)的每个块,并返回相关的“数字”值.

现在,我对Ruby很新,我不知道是否已经有一个功能来帮助实现这一点.然而,几天的Google Googles和Ruby资源书籍的研究并没有产生任何有用的东西.

有什么建议么?

解决方法

首先,JSON应该如下:(注意逗号)
{
  "incidents": [
    {
      "number": 1,"key": "abc123"
    },{
      "number": 2,"key": "xyz098"
    },{
      "number": 3,"key": "lmn456"
    }
  ]
}

将上面的json放在一个变量中

s =  '{"incidents": [{"number": 1,"key": "abc123"},{"number": 2,"key": "xyz098"},{"number": 3,"key": "lmn456"}]}'

解析JSON

h = JSON.parse(s)

使用地图查找所需数量

h["incidents"].map {|h1| h1['number'] if h1['key']=='xyz098'}.compact.first

或者您也可以使用下面的查找

h["incidents"].find {|h1| h1['key']=='xyz098'}['number']

或者您也可以使用select如下

h["incidents"].select {|h1| h1['key']=='xyz098'}.first['number']

猜你在找的Ruby相关文章