【问题标题】:Convert Hash to specific string format in ruby将哈希转换为ruby中的特定字符串格式
【发布时间】:2019-10-28 11:40:05
【问题描述】:

我想将哈希:{"key1"=>"value1", "key2"=>"value2"} 转换为如下所示的字符串:'[{"key1" : "value1","key2" : "value2"}]'

背景:我正在从我的 rails 控制器进行 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 的格式与 curl 请求中的数据格式不匹配,导致 Net::HTTPBadRequest 400 Bad Request

有人可以解释我如何实现这一目标吗? TIA

【问题讨论】:

    标签: ruby ruby-on-rails-5 net-http


    【解决方案1】:

    只需使用 json 模块:

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

    【讨论】:

    • 是的,它奏效了。我的印象是 to_json 只适用于哈希。谢谢!
    • 您可以将任何数据结构转换为 json、内部包含数组的哈希数组数组...顺便说一句 - 你知道 jq stedolan.github.io/jq 吗?它可以在命令行上使用 json 数据。
    猜你喜欢
    • 2010-11-05
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2015-09-06
    • 2013-07-06
    • 2014-09-24
    • 1970-01-01
    相关资源
    最近更新 更多