首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析坏JSON

解析坏JSON
EN

Stack Overflow用户
提问于 2022-04-30 17:40:33
回答 1查看 28关注 0票数 0

下面的代码段在使用jsonlint.com验证文件时创建了一个失败点

"description": "\#$CS-4 PZ",

派生自模式\#$

反斜杠是违规字符,因为它允许继续处理文件,直到遇到后续反斜杠。该文件被传输到本地rails API,可能是由windows颁发者发送的。

如何在红宝石中进行预处理以去除违规的反斜杠?

EN

回答 1

Stack Overflow用户

发布于 2022-04-30 21:26:46

最好的做法是,正如max在评论中所说的,不要接受坏的JSON。但如果你忍不住..。

您可以在json.org看到有效的转义序列是什么,并去掉不适合的反斜杠:

代码语言:javascript
复制
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

如果您想保留奇怪的反斜杠:

代码语言:javascript
复制
json = bad_json.gsub(/(\\(?:["\\\/bfnrt]|u[a-fA-F0-9]{4}))|(\\)/, '\1\2\2')
puts json
# => \\# is bad but \u0020, \\ and \n are good
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72070759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档