ruby - 在 Ruby 中解析有效负载的正确方法
问题描述
我有以下有效载荷:
[{:payload=>
"{\"user\":\"test\",\"job\":\"Test\",\"username\":\"Bob\",\"blocks\":[{\"type\":\"section\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"this is the title\"}},{\"type\":\"context\",\"elements\":[{\"type\":\"mrkdwn\",\"text\":\"Test\"}]},{\"type\":\"divider\"}]}"}]
我试图弄清楚如何提取它。我试过了
JSON.parse(response)
但我收到以下错误
TypeError: no implicit conversion of Hash into String
如何将此值提取到可以执行以下操作的位置:
response.job == "test" ?
解决方案
假设您的意思是:
response = [{:payload => "{\"user\":\"test\",\"job\":\"Test\",\"username\":\"Bob\",\"blocks\":[{\"type\":\"section\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"this is the title\"}},{\"type\":\"context\",\"elements\":[{\"type\":\"mrkdwn\",\"text\":\"Test\"}]},{\"type\":\"divider\"}]}"}]
然后response
是一个包含一个元素的数组。那一个元素是hash。因此,您将使用以下方式访问payload
:
payload = JSON.parse(response.first[:payload])
=> {
"user" => "test",
"job" => "Test",
"username" => "Bob",
"blocks" => [
[0] {
"type" => "section",
"text" => {
"type" => "mrkdwn",
"text" => "this is the title"
}
},
[1] {
"type" => "context",
"elements" => [
[0] {
"type" => "mrkdwn",
"text" => "Test"
}
]
},
[2] {
"type" => "divider"
}
]
}
然后该payload
对象是一个哈希,并且可以使用标准[]
调用访问其子元素:
job = payload['job']
=> "Test"
推荐阅读
- php - Mongodb中重复键错误消息中的unhex字段如何
- google-cloud-platform - 从 Client ID + Secret 获取 Google Project ID?
- selenium - locusts-plugins: FileNotFoundError: [WinError 2] 系统找不到指定的文件
- sql-server - SQL Server:如何合并具有不同行数的 3 个表
- typescript - webpack-dev-server包和http-proxy-middleware冲突,也是它的子依赖
- amazon-web-services - 如果使用 EC2 角色,Go AWS SDK 是否需要凭证?
- vue.js - 如何通过设置 v-model 来更新现有的 v-select?
- python - 从可执行行的可能性中获取错误
- swift - 如何在 Swift 中从 Firebase Firestore 获取字典
- c# - 将文件夹、子文件夹和文件作为 blob c#