如何从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删除\“然后删除[”最后删除“]

我希望这有帮助