我在已经转义的文本文件中有一些 json:
"{\"嘿\":\"那里\"}"
当我尝试读取文件时:
File.open("\file\path.txt").read
它再次转义内容,因此现在是双重转义:
"\"{\\\"嘿\\\":\\\"那里\\\"}\""
有没有办法防止转义?
或者,是否有一种简单的方法可以在读取和转义后对字符串进行转义?
谢谢。
编辑:
答案是有道理的,但我似乎无法解析 JSON。
irb(main):018:0> json
=> "\"{\\\"hey\\\":\\\"there\\\"}\"\n"
irb(main):019:0> puts json
"{\"hey\":\"there\"}"
=> nil
irb(main):017:0> x = JSON.parse(json)
JSON::ParserError: 751: unexpected token at '"{\"hey\":\"there\"}"
'
意外的 token 在哪里?
谢谢。
编辑 2:
This SO question had the answer
“问题在于您的文件可能是有效的 JS,但它不是有效的 JSON,因此 JSON 库倾向于拒绝它。”
我信任来源(我),所以如果我运行:
x = JSON.parse(eval(json))
它有效!
谢谢。
最佳答案
试试这个:
require 'json'
JSON.parse(File.read("\file\path.txt"))
编辑:
IRB 的输出:
1.9.3p0 :006 > json = JSON.parse("{\"hey\":\"there\"}")
=> {"hey"=>"there"}
如果你仍然希望它是一个字符串:
1.9.3p0 :007 > json = JSON.parse("{\"hey\":\"there\"}").to_s
1.9.3p0 :008 > puts json
{"hey"=>"there"}
=> nil
关于Ruby/Rails - 如何防止字符转义(或之后转义)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082177/