如何从JSON字符串中删除反斜杠?
我有一个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"}]}}}'
我需要知道如何删除这些斜杠。
使用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"}]}}}
要避免在控制台中使用反斜杠生成JSON
,请使用puts
:
> hash = {test: 'test'} => {:test=>"test"} > hash.to_json => "{\"test\":\"test\"}" > puts hash.to_json {"test":"test"}
当然,你也可以使用JSON.pretty_generate
。
> puts JSON.pretty_generate(hash) { "test": "test" }
使用gsub
将所有反斜杠替换为空字符串:
json.gsub('\\', '')
请注意,REPL中的默认输出使用inspect
,它将双引号字符串并仍包含反斜杠以转义双引号。 使用puts
来查看字符串的确切内容:
{“test”:{“test1”:{“test1”:[{“test2”:“1”,“test3”:“foo”,“test4”:“bar”,“test5”:“test7”}] }}}
此外,请注意,这将删除所有反斜杠,并不考虑其上下文。 您可能希望仅删除双引号之前的反斜杠,在这种情况下,您可以执行以下操作:
json.gsub('\"', '')
我需要将一个漂亮的JSON数组打印到文件中。 我创建了一个JSON对象数组,然后打印到一个文件供DBA操作。
这就是我做到的。
puts(((dirtyData.gsub(/ \“/,”\“”))。gsub(/ [“/,”[“))。gsub(/”] /,“]”))
这是一个三重嵌套的gsub删除\“然后删除[”最后删除“]
我希望这有帮助