Конвертировать хэш в определенный формат строки в ruby - PullRequest
0 голосов
/ 13 июня 2019

Я хотел бы преобразовать хеш: {"key1"=>"value1", "key2"=>"value2"} в строку, которая выглядит следующим образом: '[{"key1" : "value1","key2" : "value2"}]'

Справочная информация: я делаю вызов API из моего контроллера рельсов. Curl эквивалент этого запроса curl -X POST -H 'Content-Type: application/json' -i 'valid_uri' --data '[{"key1" : "value1","key2" : "value2"}]'

Итак, чтобы преобразовать это в ruby, я попробовал следующее:

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse(VALID_URI)
header = {'Content-Type' => 'application/json'}
data = {"key1"=>"value1", "key2"=>"value2"}
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri, header)
request.body = Array.wrap(data1.to_s.gsub('=>',':')).to_s
response = http.request(request)

Однако формат request.body не соответствует формату данных в запросе скручивания, что приводит к неправильному запросу Net :: HTTPBadRequest 400

Может кто-нибудь объяснить, как мне этого добиться? ТИА

1 Ответ

1 голос
/ 13 июня 2019

просто используйте модуль json:

require "json"
h=[{"key1"=>"value1", "key2"=>"value2"}]
string=h.to_json # => [{"key1":"value1","key2":"value2"}]
...