繁体   English   中英

如何将JSON response.body放入字符串中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM