[英]How to put JSON response.body into string
我正在研究在Ruby中解析JSON。 有人可以让我知道如何采取response.body
并将其发布在字符串中。
是否有任何宝石可通过解析对此信息进行排序?
require 'net/http'
require 'json'
uri = URI('https://api.wmata.com/StationPrediction.svc/json/GetPrediction/all')
uri.query = URI.encode_www_form({
# Specify your subscription key
'api_key' => '#',
})
request = Net::HTTP::Get.new(uri.request_uri)
# Basic Authorization Sample
# request.basic_auth 'username', 'password'
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(request)
@data = response
end
您可以使用以下命令将JSON响应转换为哈希:
hash_response = JSON.parse(response)
之后,您可以轻松地在ruby函数中使用哈希。
JSON gem非常智能,可以很容易地将对象转换为JSON,或者将JSON字符串转换回对象。 这是一个简单的往返示例:
require 'json'
foo = {'a' => 1, 'b' => [2, 3]}
json_string = JSON[foo]
json_string # => "{\"a\":1,\"b\":[2,3]}"
bar = JSON[json_string] # => {"a"=>1, "b"=>[2, 3]}
bar == foo # => true
请注意, JSON\\[...\\]
检测参数是字符串还是哈希(或数组)。 如果它是第一个尝试将字符串转换为散列或数组,或反之亦然。 从文档:
如果object是类似字符串的,则解析字符串并将解析后的结果作为Ruby数据结构返回。 否则,从Ruby数据结构对象生成JSON文本并返回它。
如果您还想转换对象,可以使用to_json
方法:
foo.to_json # => "{\"a\":1,\"b\":[2,3]}"
你必须要注意使用to_json
因为如果你不给它一个数组或一个哈希,它将生成无效的JSON输出:
'a'.to_json # => "\"a\""
1.to_json # => "1"
JSON.parse(...)
也可用于将字符串转回对象:
JSON.parse(json_string) # => {"a"=>1, "b"=>[2, 3]}
但我倾向于使用较短的JSON[...]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.