如何将带有双引号反斜杠的JSON字符串转换为Javascript对象

时间:2016-07-04 07:22:25

标签: javascript angularjs json object backslash

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

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

如何在角度模板页面中使用$scope.text,如下所示:

{{text.response.age}}

这是我的演示Demo

1 个答案:

答案 0 :(得分:2)

$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}}';