Разбор вложенных свойств строки JSON JSON.parse
Я получаю следующую строку из модуля API:
{"value":"{\"Id\":\"100\",\"OrganizationName\":\"[_+-:|;'.\\\/] Arizona
Grower Automation\"}"}
Когда я использую JSON.parse на стороне клиента, я получаю:
Uncaught SyntaxError: Unexpected token I in JSON at position 12
Это работает, если кавычки внутри дважды экранированы, но каков наилучший способ сделать это? Более конкретно, это возвращается плагином Ionic Capacitor из нативного кода в среду JavaScript.
2 ответа
Решение
Вы должны избежать обратной косой черты, а также двойных кавычек:
/// 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"}"
Нам нужно три обратных слэша, потому что первые два представляют один экранированный обратный слеш, третий - escape-символ для двойных кавычек.
<script>
var jsonString = "{\"value\":{\"Id\":\"100\",\"OrganizationName\":\"[_+-:|;'.\\\/] Arizona Grower Automation\"}}";
console.log(JSON.parse(jsonString));
</script>