我正在使用 Ruby 脚本与应用程序 API 交互,返回的结果采用 JSON 格式。例如:
{
"incidents": [
{
"number": 1,
"status": "open",
"key": "abc123"
}
{
"number": 2,
"status": "open",
"key": "xyz098"
}
{
"number": 3,
"status": "closed",
"key": "lmn456"
}
]
}
我希望在每个 block 中搜索特定的“键”值(本例中为 yzx098)并返回关联的“数字”值。
现在,我对 Ruby 还很陌生,我不确定是否已经有一个函数可以帮助实现这一点。然而,搜索谷歌和 Ruby 资源书籍几天没有产生任何有用的东西。
有什么建议吗?
最佳答案
首先,JSON 应该如下所示:(注意逗号)
{
"incidents": [
{
"number": 1,
"status": "open",
"key": "abc123"
},
{
"number": 2,
"status": "open",
"key": "xyz098"
},
{
"number": 3,
"status": "closed",
"key": "lmn456"
}
]
}
将上面的json存储到一个变量中
s = '{"incidents": [{"number": 1,"status": "open","key": "abc123"},{"number": 2,"status": "open","key": "xyz098"},{"number": 3,"status": "closed","key": "lmn456"}]}'
解析JSON
h = JSON.parse(s)
使用 map
查找所需的 number
h["incidents"].map {|h1| h1['number'] if h1['key']=='xyz098'}.compact.first
或者你也可以像下面这样使用find
h["incidents"].find {|h1| h1['key']=='xyz098'}['number']
或者你也可以像下面那样使用select
h["incidents"].select {|h1| h1['key']=='xyz098'}.first['number']
关于ruby-on-rails - 使用 Ruby 搜索 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22415525/