JSON.parse嵌套的JSON字符串属性解析

时间:2018-10-26 17:19:25

标签: javascript typescript ionic-framework capacitor

我从API模块获取以下字符串:

{"value":"{\"Id\":\"100\",\"OrganizationName\":\"[_+-:|;'.\\\/] Arizona 
Grower Automation\"}"}

当我在客户端使用JSON.parse时,我得到:

Uncaught SyntaxError: Unexpected token I in JSON at position 12

如果里面的引号是双转义的,这是可行的,但是什么是最好的方法呢?更具体地说,这是由Ionic Capacitor插件从本机代码返回到JavaScript环境返回的。

2 个答案:

答案 0 :(得分:3)

您需要转义反斜杠以及双引号:

/// NO!
JSON.parse('{"value":"{\"Id\":\"100\",\"OrganizationName\":\"[_+-:|;\'.\\\/] Arizona Grower Automation\"}"}');
/// Syntax Error: Unexpected token I in JSON at position 12


/// YES!
JSON.parse('{"value":"{\\\"Id\\\":\\\"100\\\",\\\"OrganizationName\\\":\\\"[_+-:|;\'.\\\/] Arizona Grower Automation\\\"}"}');
/// value: "{"Id":"100","OrganizationName":"[_+-:|;'./] Arizona Grower Automation"}"

我们需要三个反斜杠,因为前两个代表一个转义的反斜杠,第三个是双引号的转义字符。

答案 1 :(得分:0)

<script>
var jsonString = "{\"value\":{\"Id\":\"100\",\"OrganizationName\":\"[_+-:|;'.\\\/] Arizona Grower Automation\"}}";

console.log(JSON.parse(jsonString));

</script>