Разбор JSON с помощью JavaScript - PullRequest
0 голосов
/ 07 февраля 2012

Я пытаюсь проанализировать ответ JSON с сервера, используя javascript / jquery.Это строка:

{
"status": {
    "http_code": 200
},
"contents": "HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\nDate: Tue, 07 Feb 2012 08:14:38 GMT\r\nServer: localhost\r\n\r\n {\"response\": \"true\"} "
}

Мне нужно получить значение response.

Вот что я пытаюсь выполнить в функции успеха моего запроса POST:

            success: function(data) {
            var objstring = JSON.stringify(data);
            var result = jQuery.parseJSON(JSON.stringify(data));
            alert(objstring);

            var result1 = jQuery.parseJSON(JSON.stringify(result.contents[0]));
            alert(result1.response);

            alert(data.contents[0].response);

Но пока ничего из того, что я пробовал, не возвращает правильного результата: «Я продолжаю получать undefined, однако содержимое objstring является правильным и содержит строку JSON.

Ответы [ 3 ]

4 голосов
/ 07 февраля 2012

Сначала установите dataType на json.Тогда data будет объектом, содержащим указанные данные:

dataType: 'json',
success: function(data) {
    alert(data.status.http_code);
    alert(data.contents);
}

Считайте API для более подробного объяснения того, чего достигают эти свойства.Это также, вероятно, поможет вам использовать консоль Javascript, поэтому вы можете использовать console.log, гораздо более мощный инструмент, чем alert.

2 голосов
/ 07 февраля 2012

Похоже, что сам ответ JSON содержит содержимое JSON. В зависимости от того, как вы вызываете метод jQuery.post(), вы получите либо строку, либо объект JSON. В первом случае используйте jQuery.parseJSON () для преобразования строки в объект JSON:

data = jQuery.parseJSON(theAboveMentionedJsonAsString);

Далее, получите все внутри свойства contents после первого \r\n\r\n:

var contentBody = data.contents.split("\r\n\r\n", 2)[1];

Наконец, преобразуйте эту строку в JSON и получите желаемое значение:

var response = jQuery.parseJSON(contentBody).response;
// "true"
0 голосов
/ 07 февраля 2012

попробуйте так:

var objstring=JSON.stringify(data);
var result=JSON.parse(objstring);

alert("http code:" + result.status.http_code);
alert("contents:" + result.contents);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...