将 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_keys
。 symbolize_keys
是一个 Rails 方法。
方法如下:
JSON.parse(@products, symbolize_names: true)
有关详细信息,请参阅:
如果您使用的是 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
时为您提供带符号的键
我对 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_keys
。 symbolize_keys
是一个 Rails 方法。
方法如下:
JSON.parse(@products, symbolize_names: true)
有关详细信息,请参阅:
如果您使用的是 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
时为您提供带符号的键