我正在使用 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.parse(string, symbolize_names: true)
关于ruby-on-rails - 如何使用符号通过 HTTParty 访问 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743518/