Новичок в JSON, что я могу сделать с этим ответом JSON - PullRequest
2 голосов
/ 04 февраля 2009

Веб-сайт возвращает следующий ответ JSON, как бы я его использовал (в javascript)?

[{"ID1":9996,"ID2":22}]

JSON просто возвращает массив?

Ответы [ 6 ]

7 голосов
/ 04 февраля 2009

Если вы используете http://www.JSON.org/json2.js, вы можете использовать его метод JSON.parse для извлечения json string в качестве объекта (без использования eval (который считается злом)), поэтому в в этом случае вы бы использовали:

var nwObj = JSON.parse('[{"ID1":9996,"ID2":22}]');
alert(nwObj.ID1); //=> 9996
6 голосов
/ 04 февраля 2009

Мы используем:

function evalResponse(response) {
    var xyz123 = null;
    eval("xyz123 = " + response);
    return xyz123;
}

Альтернативный метод - просто использовать:

var myObj = eval(response);

По сути, вам нужно вызвать eval() в ответе, чтобы создать объект javascript. Это связано с тем, что сам ответ является просто строкой, когда вы получаете его обратно из вызова AJAX. После того, как вы eval это, у вас есть объект, которым вы можете манипулировать.

function myCallback(response) {
    var myObj = evalResponse(response);
    alert(myObj.ID1);
}

Вы можете использовать библиотеку javascript, чтобы справиться с этим за вас. Или вы можете попытаться разобрать строку самостоятельно. eval() имеет свои проблемы, но работает.

2 голосов
/ 04 февраля 2009

Это похоже на массив с единственным объектом, содержащим два свойства. Я бы предпочел видеть такие же структурированные данные, как это:

{ "ID": [9996,22]}

Тогда у вас есть один объект, содержащий массив с двумя элементами, который, кажется, лучше подходит для представленных данных. Затем, используя evalResponse() код Endangered, вы можете использовать его так:

var responseObj = evalResponse(response);

// responseObj.ID[0] would be 9996, responseObj.ID[1] would be 22
1 голос
/ 04 февраля 2009

Я думаю, что другие ответы могут не отвечать на ваш вопрос, возможно, вы ищете способ использовать этот «массив из 1 объекта». Может быть, это может помочь:

var arr = [{"ID1":9996,"ID2":22}];
var obj = arr[0];
var id1 = obj.ID1;
var id2 = obj.ID2;
0 голосов
/ 04 февраля 2009

Размещенный вами JSON представляет массив, содержащий один объект, имеющий атрибуты ID1 и ID2 (инициализированные соответствующими значениями после двоеточия).

Чтобы преобразовать строку в объект javascript, передайте ее в eval, например:

var obj = eval('[{"ID1":9996,"ID2":22}]');

Однако этот метод не будет работать, если у вас есть только один объект вместо массива, поэтому безопаснее заключить его в скобки:

var obj = eval('(' + jsonResponse + ')');
0 голосов
/ 04 февраля 2009

Вот как вы получаете ваши данные:

<script type="text/javascript" >
var something = [{"ID1":9996,"ID2":22}]
alert(something[0].ID1)
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...