【问题标题】:How to convert JSON string with double quotation backslash to Javascript object如何将带有双引号反斜杠的 JSON 字符串转换为 Javascript 对象
【发布时间】:2016-07-04 07:22:25
【问题描述】:

我从服务器获取响应 json 字符串,如下所示:

$scope.text = '{"response":"{\"firstName\":\"John\",\"age\":454 }"}';

如何在这样的角度模板页面中使用$scope.text

{{text.response.age}}

这是我的演示Demo

【问题讨论】:

  • 了解JSON.parse

标签: javascript angularjs json object backslash


【解决方案1】:
$scope.text = '{"response":"{\"firstName\":\"John\",\"age\":454 }"}';

这里的问题是这不是 JSON。

单独:

{"response":"{\"firstName\":\"John\",\"age\":454 }"}

… 是 JSON。

但是,一旦将其包装在 JavaScript 字符串文字中,\ 将用作 JavaScript 字符串文字的转义字符,并在它出现在 JSON 中之前被使用。

生成嵌入JS的JSON时,需要对JS中具有特殊含义的字符进行转义:

$scope.text = '{"response":"{\\"firstName\\":\\"John\\",\\"age\\":454 }\"}';

重新设计你的数据结构也是一个好主意,这样你的 JSON 首先不包含 JSON 字符串:

$scope.text = '{"response": {"firstName":"John","age":454}}';

【讨论】:

  • 谢谢,但是如何将其转换为 javascript 对象。我添加了一个演示页面。我该怎么办?
  • @Ehsan — 您需要修复输入(使其成为 JSON),正如我所描述并给出的示例。您可以对其应用 JSON.parse。
  • 我无法更改从服务器获取的响应
  • 那么你需要在解析它之前尝试以编程方式修复其中的错误。祝你好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
相关资源
最近更新 更多