Разбор вложенных свойств строки JSON JSON.parse - PullRequest
0 голосов
/ 26 октября 2018

Я получаю следующую строку из модуля 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 голосов
/ 26 октября 2018

Вам необходимо избежать обратной косой черты, а также двойных кавычек:

/// 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-символ для двойных кавычек.

0 голосов
/ 26 октября 2018

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

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

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...