Вопрос по json, arrays, jquery, jquery-mobile – JQuery парсинг массива JSON

26

У меня естьJSON выводится так:

["City1","City2","City3"]

Я хочу получить каждое из названий городов, как я могу это сделать?

$.getJSON("url_with_json_here",function(json){

});

РЕДАКТИРОВАТЬ

$.getJSON('url_here', function(data){
    $.each(data, function (index, value) {
      $('#results').append('<p>'+value+'</p>');
        console.log(value);
    });
});

Похоже, что выше не работает, значения не выводятся.

Ты используешьgetJSON() чтобы получить JSON? Потому что тогда его уже надо достать. Трудно помочь без каких-либо примеров кода. Ты такой новый, что никогда не писал ни одного кода? kapa
пожалуйста, посмотрите мои изменения, я просто запутался, как получить элементы из URL David Cahill

Ваш Ответ

5   ответов
50

getJSON() также проанализирует JSON для вас после извлечения, поэтому с этого момента вы работаете с простым массивом Javascript [] отмечает массив в формате JSON). В документации также есть примеры того, как обрабатывать извлеченные данные.

Вы можете получить все значения в массивес помощьюfor петля:

$.getJSON("url_with_json_here", function(data){
    for (var i = 0, len = data.length; i < len; i++) {
        console.log(data[i]);
    }
});

Проверьте вашу консоль, чтобы увидеть вывод Хро, Firefox / Firebug, IE).

jQuery также предоставляет$.each() для итераций, так что вы также можете сделать это:

$.getJSON("url_with_json_here", function(data){
    $.each(data, function (index, value) {
        console.log(value);
    });
});
спасибо, пожалуйста, смотрите мои изменения David Cahill
Убедитесь, что JSON прибывает :). Пытатьсяconsole.log(data);. Пример, который вы отредактировали в своем вопросе, должен работать. kapa
@ user1083813 создал маленькая симуляция для вас это доказывает, что ваш код работает. kapa
Я думаю, проблема в URL, я использую php json_encode для вывода JSON, достаточно ли этого для метода $ .getJSON? David Cahill
@ user1083813 Это легко проверить. Запишите URL-адрес (который вы бы использовали в getJSON) в своем браузере и проверьте JSON.json_encode() должно быть достаточно, но ваш код может содержать ошибки или другие вещи, которые он повторяет. kapa
29

ИспользоватьparseJSON метод:

var json = '["City1","City2","City3"]';
var arr = $.parseJSON(json);

Тогда у тебя есть массив с названиями городов.

большое спасибо, так что, если я использую вышеупомянутое с методом $ .getJSON, будет ли этот код идти в функцию после успешного получения JSON из URL-адреса? David Cahill
@ user1083813: Если вы выбираете JSON с помощью AJAX, вам следует указать, что тип данных - JSON. Затем он будет проанализирован автоматически, и в случае успешного обратного вызова получит объект или массив вместо строки. Если вы используетеgetJSON метод, тип данных устанавливается в JSON автоматически, поэтому вам не нужно анализировать результат. Guffa
Это то, что мне было нужно. У меня уже была строка JSON в сеансе, и выбор AJAX не требовался. Спасибо zkent
Этот дескриптор лучше обрабатывает массив ОП в сочетании с принятым ответом. secretwep
7
var dataArray = [];
var obj = jQuery.parseJSON(yourInput);

$.each(obj, function (index, value) {
    dataArray.push([value["yourID"].toString(), value["yourValue"] ]);
});

0
var dataArray = [];
var obj = jQuery.parseJSON(response);
  for( key in obj ) 
  dataArray.push([key.toString(), obj [key]]);
};
-1 для использованияfor..in на массиве. kapa
0

сparse.JSON

var obj = jQuery.parseJSON( '{ "name": "John" }' );
alert( obj.name === "John" );
-1 Тот же ответ был опубликован более года назад. kapa

Похожие вопросы