gpt4 book ai didi

ruby-on-rails - 如何在转换后的字符串不充满反斜杠的情况下将哈希转换为 JSON

转载 作者:行者123 更新时间:2023-12-05 08:39:22 25 4
gpt4 key购买 nike

我正在使用 to_json 将哈希值转换为 JSON,但转换后的字符串充满了反斜杠。如果我使用 puts,它会显示正确的字符串,但如果我传入 HTTP::NET request.body,该字符串将充满反斜杠。

data = {"a" => "b", "c" => "d", "e" => "f"}
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(uri.path, {'Content-Type' =>'application/json',
'Authorization' => "xyz")
req.body = data.to_json
res = http.request(req)

req.body 正在发送:

"{\"a\":\"b\",\"c\":\"d\",\"e\":\"f\"}"

因此,我的请求失败了。

我需要发送数据

"{"a" => "b", "c" => "d", "e" => "f"}"

在请求正文中。

最佳答案

您似乎对字符串的实际内容感到困惑。反斜杠是字符串表示的一部分,实际上并不在字符串中。

'"' 单个字符 " 为例。当您将其输入 irb 时,输出将是:

s = '"'
#=> "\""

从结果"\""开始"和结束"标记字符串的开始和结束,而\" 是一个转义的双引号,代表一个"。这个双引号被转义的原因是因为你想让 Ruby 将它解释为一个 " 字符, 而不是字符串的结尾。

您可以通过将字符串打印到控制台来查看不带转义字符的字符串的实际内容。

puts s
# "
#=> nil

这里可以看到字符串的内容没有反斜杠


这同样适用于您的 to_json 调用,它返回一个字符串:

data = {"a" => "b", "c" => "d", "e" => "f"}
json = data.to_json
#=> "{\"a\":\"b\",\"c\":\"d\",\"e\":\"f\"}"
puts json
# {"a":"b","c":"d","e":"f"}
#=> nil

如您所见,字符串内容中没有反斜杠,只有字符串表示形式。

关于ruby-on-rails - 如何在转换后的字符串不充满反斜杠的情况下将哈希转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59926393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com