将 JSON 个键变成符号

Turning JSON keys into symbols

我对 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

使用 symbolize_names 而不是 symbolize_keyssymbolize_keys 是一个 Rails 方法。

方法如下:

JSON.parse(@products, symbolize_names: true)

有关详细信息,请参阅:

JSON.parse

ActiveSuport::Hash#symbolize_keys

如果您使用的是 faraday-middleware gem,您可以在初始化连接时传递解析器选项,如下所示:

Faraday.new(:url => 'http://api.example.com') do |faraday|
 faraday.request :url_encoded
 faraday.response :json, parser_options: { symbolize_names: true }
end

这将在您调用 response.body

时为您提供带符号的键