Разбор ответа в формате Json
Проблема возникла при попытке разобрать ответ от сервера:
var JSONObject = JSON.parse(http_request.responseText); responseText: "{"id": "0", "nr": "101", "st": "0"}" Возникает Uncaught Syntax Error: Unexpected token. Поигрался с JSON.parse: function parseJSON1() { var JSONText = '{"id": "0", "nr": "101", "st": "0"}'; var JSONObject = JSON.parse(JSONText); alert(JSONObject.id); } function parseJSON2() { var JSONText = "{"id": "0", "nr": "101", "st": "0"}"; var JSONObject = JSON.parse(JSONText); alert(JSONObject.id); } Первый вариант (одиночные кавычки) работает, второй (двойные кавычки) нет. Почему JSON.parse не парсит responseText, данные, вроде, корректные? |
yv73, двойные кавычки внутри строки в двойных кавычках надо экранировать
alert( "12""34" ); // err alert( "12\"\"34" ); // run |
Да, спасибо, с функциями понятно, но с responseText не получается.
responseText: "{"id": "0", "nr": "101", "st": "0"}" - это ответ сервера, который я вижу в отладке. Если я добавляю экран кавычек на стороне сервера, в отладке вижу responseText: "{\"id\": \"0\", \"nr\": \"101\", \"st\": \"0\"}" и возникает ошибка "Unexpected token \" |
Раз так работает, значит и иначе должно работать.
var JSONText = '{"id": "0", "nr": "101", "st": "0"}'; var JSONObject = JSON.parse(JSONText); alert(JSONObject.id); Скорее всего вам сервер с какого-то х*я отдаёт JSON в дополнительных кавычках: var JSONText = '"{"id": "0", "nr": "101", "st": "0"}"'; var JSONObject = JSON.parse(JSONText); alert(JSONObject.id); За такое вообще хозяину сервера руки поотрывать. Ну или вам, если это ваш косяк. Если не ваш, и ничего поделать нельзя, можно извратиться так: var JSONText = '"{"id": "0", "nr": "101", "st": "0"}"'; var JSONObject = JSON.parse(JSONText.slice(1,-1)); alert(JSONObject.id); P.S. Вам лучше использовать firefox для дебага, ибо он разжевывает ошибки для идиотов. Например в данном случае: error: JSON.parse: unexpected non-whitespace character after JSON data. |
Часовой пояс GMT +3, время: 13:04. |