2016-03-31 2 views
2

У меня есть JsonResponse, который выглядит следующим образом:Json ответ в JavaScript не перекручивание правильно

[{"pk": 1, "fields": {"email": "[email protected]", "locations": [1], "group_id": "spott", "group_name": "spott"}, "model": "grouping"}, 
{"pk": 2, "fields": {"email": "[email protected]", "locations": [1, 2], "group_id": "spottalle", "group_name": "spott alle"}, "model": "grouping"}] 

Я попытался получить доступ к данным, как это:

for (var key in data) { 
      console.log(key) 
      console.log(data[key]); 
     } 

Отклик каждая буква не каждый объект. Что немного странно, посмотрев ответы на stackoverflow, я попробовал другие способы, но всегда получаю тот же результат.

Результат должен быть group_name и group_id. Может ли кто-нибудь помочь мне в этом? Спасибо заранее

+0

Это массив ... используйте 'для петли ...' вместо 'для-in..' убедитесь, что вы ВЗ итерация' JSON' .. .Вы должны иметь 'Object/Array' – Rayon

+0

@RayonDabre, что вы имеете в виду? \t \t для (var i = 0; i dk1990

+0

__Yes__, я сомневаюсь, что это 'object/array' ...Проверка 'typeof data' – Rayon

ответ

2

На самом деле это массив, так что вы можете просто цикл его, используя классический для цикла, это exmaple фрагмент:

var data = [{"pk": 1, "fields": {"email": "[email protected]", "locations": [1], "group_id": "spott", "group_name": "spott"}, "model": "grouping"}, 
      {"pk": 2, "fields": {"email": "[email protected]", "locations": [1, 2], "group_id": "spottalle", "group_name": "spott alle"}, "model": "grouping"}]; 

      for (var i=0; i<data.length; i++) { 
       console.log(data[i]); //You will get an object 
       console.log(data[i].pk); 
      } 

В каждой итерации вы получите объект, а затем вы можете получить доступ к его свойства.

EDIT:

Он dependes от типа data здесь, если это string, как вы упомянули в комментарии, вы должны разобрать его с помощью JSON.parse(data); первых, то вы можете петлю Повсеместно его.

В противном случае, если это array, вам просто нужно будет непосредственно проехать через его элементы.

+0

Это 'JSON', а не' Array'..Question говорит _ Response - это каждая буква не каждый объект_ – Rayon

+0

Да, вы правы в этом, но его можно зацикливать с помощью цикла for. –

+0

Используя 'for-loop', вы получите каждый символ .. не каждый' object' .. – Rayon

0

Здесь вы идете ..

<script> 
var object = [{"pk": 1, "fields": {"email": "[email protected]", "locations": [1], "group_id": "spott", "group_name": "spott"}, "model": "grouping"}, 
{"pk": 2, "fields": {"email": "[email protected]", "locations": [1, 2], "group_id": "spottalle", "group_name": "spott alle"}, "model": "grouping"}]; 

for(var i=0; i<object.length; i++){ 
    console.log(object[i].pk); 
    console.log(object[i].fields.email); 
    console.log(object[i].fields.group_id); 
} 


</script> 

Пожалуйста, дайте мне знать, если это не ожидается выход.

0

Ответ в закодированном виде, для доступа вы хотите декодировать ответ.

var x=[{"pk": 1, "fields": {"email": "[email protected]", "locations": [1], "group_id": "spott", "group_name": "spott"}, "model": "grouping"},{"pk": 2, "fields": {"email": "[email protected]", "locations": [1, 2], "group_id": "spottalle", "group_name": "spott alle"}, "model": "grouping"}]; 

var object=JSON.parse(x);//you will get an object then you can find what you want. 
0

вы можете попробовать сильфона простую инструкцию:

var array=[{"pk": 1, "fields": {"email": "[email protected]", "locations": [1], "group_id": "spott", "group_name": "spott"}, "model": "grouping"}, 
{"pk": 2, "fields": {"email": "[email protected]", "locations": [1, 2], "group_id": "spottalle", "group_name": "spott alle"}, "model": "grouping"}]; 

array.forEach(function(obj){ 
//to get the current object 
    console.log(obj) 
// to access to the attribute of the current object 
// example 
console.log(obj.fields.email) 

}); 
1

Попробуйте использовать $ .each вместо цикл:

Попробуйте это:

var object = [{"pk": 1, "fields": {"email": "[email protected]","locations": [1], "group_id": "spott", "group_name": "spott"}, "model": "grouping"}, 
{"pk": 2, "fields": {"email": "[email protected]", "locations": [1, 2], "group_id": "spottalle", "group_name": "spott alle"}, "model": "grouping"}]; 

$.each(object, function(index, singleObject) { 
    console.log("Single Object :%O",singleObject); 
}); 

В консоли вы получить объект должным образом.

Для Скрипки Ссылка Нажмите здесь: Fiddle Link

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