【发布时间】:2015-03-02 18:43:07
【问题描述】:
我对 API 主题真的很陌生。我已经从 API 中展示了 JSON,阅读了大量文档,并且我了解如何将 JSON 密钥转换为 ruby 符号的想法,但我不明白如何实际去做。我试过了……
1) 一种使用法拉第的方式。
2) 使用 JSON.parse
3) 使用 symbolize_keys: true
...和其他东西。
我的代码现在的样子。我还评论了我尝试的方式,所以你可以看到。
class ProductsController < ApplicationController
require 'json'
def index
@products = Product.find(:all) # GET 'http://api.example.com/store/products.json'
products = Faraday.new(:url => 'http://api.example.com') do |faraday|
faraday.request :url_encoded
faraday.response :logger
faraday.adapter Faraday.default_adapter
end
#GET
response = products.get '/store/products.json'
response.body
products.get '/store', { :name => 'Koala' }
# @products = JSON.parse(@products, symbolize_keys: true)
end
end
当前的输出只是一个 JSON 字符串。我该如何解析这个?
Flowers99.0Guitar10.99Love20.0Penguin500.0Koala1000.0[...]
HTML
= @products.each do |product|
tr
td = product.name
td = product.price
【问题讨论】:
-
你试过
deep_symbolize_keys吗?还有 Rashify Faraday middleware 组件可以减少这个问题。 -
@tadman 不。symbolize_keys 不应该也能正常工作吗? hash 是 @products = {},如果我理解正确的话,对吧?
-
symbolize_keys只执行最上面的键。也许您也在寻找要转换的嵌套键,或者您正在寻找就地symbolize_keys!方法。 -
@tadman 真的,我不知道。你能写下我应该如何实际找到哈希,然后用这些方法中的任何一种来符号化它们。还有symbolize_keys!方法似乎已被弃用或移至某处。
-
刚刚搬家了。简单使用:
hash.deep_symbolize_keys!。试试这些,它们的用法应该很明显了。
标签: ruby-on-rails json api