ruby-on-rails - 如何使用符号通过 HTTParty 访问 JSON 响应?

标签 ruby-on-rails json ruby hash https

我正在使用 HTTPparty gem 在我的 Rails 应用程序中发送请求。这是一个例子:

order = HTTParty.get("https://sandbox.moip.com.br/v2/payments/#{o.payment_id}",
                headers: {"Authorization" => "Basic #{encode_auth_token}"})

order_status = JSON.parse(order.body)

变量 order 接收一个 json 作为响应。我已经设法检索到我需要的信息,但我想使用符号而不是字符串来访问 json 数据。

有什么方法可以使用符号访问我的 json 数据吗?例如:

order_status[:link]

最佳答案

剧透警告:最佳选择是#3


选项 1:您可以调用 .with_indifferent_access在哈希上,以便能够使用 'link':link:

访问值
{'a' => 1}[:a]
# => nil
{'a' => 1}.with_indifferent_access[:a]
# => 1
{'a' => 1}.with_indifferent_access['a']
# => 1

选项 2: 调用 .symbolize_keys (或者 .deep_symbolize_keys 如果你也想对嵌套键进行符号化)在散列上将所有键转换为符号:

hash = { 'name' => 'Rob', 'address' => { 'postal_code' => '92210' } }
hash.symbolize_keys
# => {:name=>"Rob", :address=>{'postal_code'=>'92210'}}
hash.deep_symbolize_keys
# => {:name=>"Rob", :address=>{:postal_code=>'92210'}}

选项 3:将 symbolize_names 选项设置为 true

解析 JSON
JSON.parse(string, symbolize_names: true)

关于ruby-on-rails - 如何使用符号通过 HTTParty 访问 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743518/

相关文章:

sql - 通过 named_scope 返回对象数组 -- has_many...belongs_to 关联; UNION ALL 查询

python - 如何在 Selenium webdriver Firefox 中获取来自 `driver.page_source` 的 HTTP 请求的原始 JSON 响应

iOS:在第一次启动应用程序时管理数据

ruby - 如何使用Rake管理多目录项目?

ruby-on-rails - Rails 多客户端应用程序 - 我真的应该使用 API/json 吗?

ruby-on-rails - 在本地计算机上模拟 Heroku

ios - 如何使用新的 Apple Swift 语言发布 JSON

ruby-on-rails - 尝试使用 Jekyll rake 命令时出现错误

ruby-on-rails - Ruby (Rails) 取消转义字符串 -- undo Array.to_s

ruby-on-rails - Cucumber 测试有 60% 的时间在传递功能代码时失败的常见原因有哪些?