gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:09 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com