gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:30:40 26 4
gpt4 key购买 nike

我正在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com