Kri*_*her 20 ruby json ruby-on-rails
我使用Ruby脚本与应用程序API进行交互,返回的结果是JSON格式.例如:
{
"incidents": [
{
"number": 1,
"status": "open",
"key": "abc123"
}
{
"number": 2,
"status": "open",
"key": "xyz098"
}
{
"number": 3,
"status": "closed",
"key": "lmn456"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我希望在每个块中搜索特定的"键"值(在此示例中为yzx098)并返回关联的"数字"值.
现在,我对Ruby很新,我不确定是否已经有一个功能来帮助实现这个目标.然而,几天搜索谷歌和Ruby资源书并没有产生任何有用的东西.
有什么建议?
Kir*_*rat 39
首先,JSON应如下所示:(注意逗号)
{
"incidents": [
{
"number": 1,
"status": "open",
"key": "abc123"
},
{
"number": 2,
"status": "open",
"key": "xyz098"
},
{
"number": 3,
"status": "closed",
"key": "lmn456"
}
]
}
Run Code Online (Sandbox Code Playgroud)
在变量中使用上面的json
s = '{"incidents": [{"number": 1,"status": "open","key": "abc123"},{"number": 2,"status": "open","key": "xyz098"},{"number": 3,"status": "closed","key": "lmn456"}]}'
Run Code Online (Sandbox Code Playgroud)
解析JSON
h = JSON.parse(s)
Run Code Online (Sandbox Code Playgroud)
找到所需的number使用map
h["incidents"].map {|h1| h1['number'] if h1['key']=='xyz098'}.compact.first
Run Code Online (Sandbox Code Playgroud)
或者你也可以使用find如下
h["incidents"].find {|h1| h1['key']=='xyz098'}['number']
Run Code Online (Sandbox Code Playgroud)
或者你也可以使用select如下
h["incidents"].select {|h1| h1['key']=='xyz098'}.first['number']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20023 次 |
| 最近记录: |