首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理JSON值中的双引号?

如何处理JSON值中的双引号?
EN

Stack Overflow用户
提问于 2020-09-22 21:52:24
回答 1查看 2.6K关注 0票数 1

我有作为HTTP响应接收的字符串。不幸的是,字符串是一种原始格式,我无法将其转换为JSON对象。

示例字符串:

代码语言:javascript
运行
复制
json_string = '{"client_id":8888,"time":null,"questions":{"id":10000,"answered":"true","answer":"The "project" was good, I enjoyed it. Do you plan to repeat it?"},"other":"When is the "project" released?"}'

该字符串的问题在于它在某些值(用户回答)中包含双引号。可以包含双引号的值的键并不总是相同的(这里的“答案”和“其他”在其他响应中可能是不同的)。用户答案可以包含任何字符(逗号、方括号、双引号...)。

我尝试使用不同的加载器(json、yaml),甚至尝试使用regexp自己解析字符串,但总是失败。

有没有办法把这个字符串转换成JSON对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-22 21:58:10

需要明确的是,这里正确的解决方案应该是修复发送HTTP响应的内容;在JSON字符串中包含双引号的正确方法是使用反斜杠:

代码语言:javascript
运行
复制
{ "key": "value with \"double quotes\" inside" }

任何JSON解析器都应该将上述内容作为有效对象接受。

您不能可靠地解析带有未转义引号的内容,因为您无法区分哪些是实际的字符串分隔符,哪些是封闭数据。如果您可以假设引号是对称的(因此任何字符串中总是有偶数个引号),那么您可以构造一个解析器将其转换为正确的语法,但这不是一个简单的基于正则表达式的修复。

也就是说,在您的示例数据中,嵌入的引号看起来像是用空格括起来的,而实际的分隔符引号没有空格。因此,您可以尝试通过将" (空格-引号)替换为\" (空格-反斜杠-引号)和将" (引号-空格)替换为\" (反斜杠-引号-空格)来运行它,看看是否有效。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64011248

复制
相关文章

相似问题

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