2016-07-04 1 views
0

Я получаю ответ JSON строку с сервера, как это:Как преобразовать JSON строку с двойным котировальный обратной косой черты для объекта Javascript

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

Как использовать $scope.text в угловой шаблон страницы, как это:

{{text.response.age}} 

Это мой демо Demo

+0

Читайте о 'JSON.parse' – Rayon

ответ

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

Проблема в том, что это не JSON.

Само по себе:

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

... это JSON.

Однако, как только вы завернете его в строковый литерал JavaScript, \ используется как символ escape для строкового литерала JavaScript и получает его до того, как он появится в JSON.

При создании JSON, встроенном в JS, вам нужно бежать символы с особым значением в JS:

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

Было бы хорошая идея, чтобы перестроить структуру данных, чтобы ваш JSON не содержат строки JSON в первую очередь:

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

Спасибо, но как преобразовать его в объект JavaScript. Я добавил демонстрационную страницу. Что мне делать? –

+0

@ Ehsan - Вам нужно исправить вход (чтобы сделать его JSON), как я описал, и привел пример. Вы можете применить JSON.parse к нему. – Quentin

+0

Я не могу изменить ответ, полученный с сервера –

Смежные вопросы