Ruby JSON 响应奇怪的转义字符

Ruby JSON response weird escaped characters

在这里很困惑。第一次通过 HTTParty 使用 RestClient。但是当我提出请求时,我收到

response = RestClient.get(url, :content_type => :json, :accept => :json, :'authorization' => token)

=> "{\"items\":[{\"tag\":\"#R0YL2RP\"},{\"tag\":\"#8U9PVV0R\"}]}"

那么 \ 是怎么回事?我该如何摆脱它们?

作为对 REPL 表达式求值的结果,您已将响应打印到控制台。此显示是使用 #inspect 打印的,对于字符串,它给出了字符串本身的表示(因此您可以将其放入代码中);在此表示中,反斜杠和双引号被转义:

"foo" + "bar"
#  => "foobar"       - note the quotes

如果您打印字符串本身,则不会对其进行转义:

puts "foo" + "bar"
# foobar            - note: no quotes
#  => nil           - return value of `puts`

如果您的字符串包含引号:

puts "\""
# "
#  => nil

"\""
#  => "\""

您的 JSON 没问题 - 只是在打印时被转义了。做 puts response 而不是 response 看看。

您的回复是字符串格式,看起来没问题。将其转换为实际的 JSON 对象

require 'json'

JSON.parse(json_string)

没关系。您需要使用 JSON.parse 方法

解析 json 响应

在您的代码中需要 json 模块:

require 'json'

并解析您的响应 JSON 字符串:

JSON.parse(response)

Documentation