下面的代码段在使用jsonlint.com验证文件时创建了一个失败点
"description": "\#$CS-4 PZ",
派生自模式\#$。
反斜杠是违规字符,因为它允许继续处理文件,直到遇到后续反斜杠。该文件被传输到本地rails API,可能是由windows颁发者发送的。
如何在红宝石中进行预处理以去除违规的反斜杠?
发布于 2022-04-30 21:26:46
最好的做法是,正如max在评论中所说的,不要接受坏的JSON。但如果你忍不住..。
您可以在json.org看到有效的转义序列是什么,并去掉不适合的反斜杠:
bad_json = "\\# is bad but \\u0020, \\\\ and \\n are good"
json = bad_json.gsub(/(\\(?:["\\\/bfnrt]|u[a-fA-F0-9]{4}))|\\/, '\1')
puts json
# => # is bad but \u0020, \\ and \n are good如果您想保留奇怪的反斜杠:
json = bad_json.gsub(/(\\(?:["\\\/bfnrt]|u[a-fA-F0-9]{4}))|(\\)/, '\1\2\2')
puts json
# => \\# is bad but \u0020, \\ and \n are goodhttps://stackoverflow.com/questions/72070759
复制相似问题