【发布时间】:2019-10-14 11:30:51
【问题描述】:
我有一个变量var jsonData = '{"Key":"query","Value":"dept=\"Human Resources*\"","ValueType":"Edm.String"}';
我正在尝试使用 JSON.parse(jsonData) 解析变量,但是,我收到错误“JSON 中第 30 位的意外令牌 H”。我无法更改变量的返回方式,所以我认为我对这个问题的理解如下:
-
JSON.parse(jsonData)出错,因为它无法将转义的双引号识别为转义,因为它完全包含在单引号中 -
jsonData.replace(/\\"/g, "\\\\"")或我尝试过的其他组合没有找到\",因为 javascript 将\"视为"
问题我怎样才能正确地解析这个,要么用 JSON.parse() 可以处理的东西替换转义的引号,要么使用其他东西来正确解析它?我想坚持使用 JSON.parse() ,因为它很简单,但对其他选项持开放态度。
编辑:不幸的是,我无法在此阶段更改变量,这只是较大 JSON 响应的一个小示例。这是一个临时解决方案,直到应用程序被授予访问 API 的权限,但在此之前我需要临时解决方案(IT 部门可能会很慢)。我现在正在做的事情是通过直接点击 API 地址来获取大型 JSON 响应,并且浏览器使用来自用户 OAuth 的 cookie 进行身份验证。然后我将 JSON 响应复制并粘贴到我的应用程序中,以便我可以处理数据。响应中充满了转义的引号,手动编辑文本会很费力,我试图避免在复制到变量之前复制到文本处理器中。
【问题讨论】:
-
JSON 究竟来自哪里?正确的做法是从源头上修复它
-
不清楚您是否可以控制该变量的值。答案会根据情况而改变。按照您编写代码示例的方式,您可以根据 Max Meijer 的答案简单地更改字符串的值。
标签: javascript json string