Rag*_*ghu 9 ruby string json escaping
我有一个JSON字符串,如下所示
'{\"test\":{\"test1\":{\"test1\":[{\"test2\":\"1\",\"test3\": \"foo\",\"test4\":\"bar\",\"test5\":\"test7\"}]}}}'
我需要使用Ruby或Rails将其更改为下面的一个:
'{"test":{"test1":{"test1":[{"test2":"1","test3": "foo","test4":"bar","test5":"bar2"}]}}}'
我需要知道如何删除这些斜杠.
den*_*lin 26
要避免JSON在控制台中使用反斜杠生成,请使用puts:
> hash = {test: 'test'}
=> {:test=>"test"}
> hash.to_json
 => "{\"test\":\"test\"}"
> puts hash.to_json
{"test":"test"}
当然JSON.pretty_generate,你也可以使用它puts.
> puts JSON.pretty_generate(hash)
{
  "test": "test"
}
使用Ruby的String#delete!方法.例如:
str = '{\"test\":{\"test1\":{\"test1\":[{\"test2\":\"1\",\"test3\": \"foo\",\"test4\":\"bar\",\"test5\":\"test7\"}]}}}'
str.delete! '\\'
puts str
#=> {"test":{"test1":{"test1":[{"test2":"1","test3": "foo","test4":"bar","test5":"test7"}]}}}
使用以下命令将所有反斜杠替换为空字符串gsub:
json.gsub('\\', '')
请注意,REPL中的默认输出使用inspect,它将双引号字符串并仍包含反斜杠以转义双引号.使用puts看字符串的确切内容:
{"test":{"test1":{"test1":[{"test2":"1","test3": "foo","test4":"bar","test5":"test7"}]}}}
此外,请注意,这将删除所有反斜杠,并且不考虑它们的上下文.您可能希望仅删除双引号之前的反斜杠,在这种情况下,您可以执行以下操作:
json.gsub('\"', '')
| 归档时间: | 
 | 
| 查看次数: | 22986 次 | 
| 最近记录: |