【问题标题】:Parsing Double Quotes within JSON在 JSON 中解析双引号
【发布时间】:2013-04-23 20:59:56
【问题描述】:

我正在尝试解析从第三方 API 接收到的一些 JSON。问题是某些 JSON 在引号内有引号,如下所示:

var json = '{"sentence": "My favorite sport is "dodgeball"." }';

我很确定浏览器将引用解释为

"My favorite sport is"

然后在以下字符上遇到语法错误。我该如何避免这种情况?

编辑:我发布了问题的简化版本,但这是给我带来麻烦的代码的实际 sn-p(问题是“Cool Vendor " 用引号括起来):

{"content":"Vana Workforce is the Cloud HR Company. We are a global provider of human capital software and service solutions specifically designed to the needs of small and medium enterprises delivered on-demand.

Developed on the industry's leading cloud platform Force.com, Vana Human Capital Management delivers one complete and integrated human capital management solution for global organizations form hire to retire including the core human resource system of record, benefits & compensation, absence management, performance and talent management, career and succession planning, workforce collaboration, and workforce analytics.

Founded in 2008, Vana Workforce has offices in Canada and the United States with customers on every continent, and was recently recognized by Gartner Research as a "Cool Vendor" for 2010.","val":"Description"}

【问题讨论】:

  • 那个 JSON 无效。他到底是从 API 获得的?
  • 我正在提取用户列表,而简短的个人简介部分有时会包含双引号。遗憾的是,该服务 (zoho.com) 没有对其进行消毒。
  • 这不是“消毒”的问题;这完全是错误的。换句话说,如果你将它提供给 JSON 解析器,它只会抛出一个异常。既然你不这样做,那你在做什么呢?
  • 我从第三方 API 接收到错误的 JSON,我正在尝试修复它,以便将其提供给 JSON 解析器。
  • 好吧,随便。我所要求的只是确切地查看从 API 返回的内容,原始且未受影响。您发布的是一段 JavaScript 代码,几乎可以肯定这不是 Zoho 返回的内容。

标签: javascript json


【解决方案1】:

那不是有效的 JSON,所以你不能用标准方法来做。

您要么必须像这样转义引号:"sport is \" ",否则您需要编写自己的消毒剂

【讨论】:

  • 我将如何清理代码(仅转义值内的字符)?
  • 您必须检查字符串,如果看到模式,请将“替换为\”。如果这是随机发生的,那么我认为您不能自动执行此操作,您需要手动对其进行清理(或修复为您提供伪 json 的服务)
  • @jarednielsen 你无法真正清理它;它在语法上不正确。它应该首先由创建它的服务正确生成。
  • 没错,只有在有模式的情况下才能做到,例如总是在同一个句子之前。如果是这种情况,您可以用转义的句子替换句子。但正如我所说,最好首先从服务中获得它
【解决方案2】:

那些引号应该被转义 -

"My favorite sport is \"dodgeball\"."

如果这是一项真正的服务(不是家庭作业),这将是正确的。如果是作业,那就去修复服务中的那个错误。

【讨论】:

  • 我该怎么做呢?真正的 JSON 响应很长,我无法手动转义每一个单引号。
  • @jarednielsen 如果服务实际上以这种方式被破坏,那么不要使用它。
  • 好的。使用 XML 会避免这个问题吗?
  • @jarednielsen 我不知道你在说什么。您是否拥有有问题的服务?还是别人呢?它是否支持 XML 和 JSON?
  • 其他人拥有错误源。它同时支持 XML 和 JSON 格式,因此如果需要,我可以获取 XML 数据而不是 JSON。
猜你喜欢
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
  • 2018-09-05
  • 1970-01-01
相关资源
最近更新 更多