Ruby/Rails - 如何防止字符转义(或之后转义)?

标签 ruby escaping

我在已经转义的文本文件中有一些 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/

相关文章:

ruby-on-rails - 查找数组的每个子数组包含的值

ruby - 在日历应用程序中模拟重复事件的最佳方式是什么?

ruby-on-rails - 不理解类、模块和类 << self 方法

ruby - 无法用 pry 发布要点

javascript - 删除转义字符

java - 如何 "escape"整个字符串 - SQL 查询

database - 转义数据库中的字符

ruby-on-rails - 不同账户的Rails App增量票号

java - 在字符串中写入html

c - 用于转义字符串的标准 C 库