2016-01-15 2 views
2

У меня есть файл в формате JSON, глядя, как это:детали объекта вызова Fron JSON в JavaScript

{ 
    "courses": [{ 
    "Name": "Course1", 
    "Containing": { 
     "C1": { 
     "Name": "C1name", 
     "When": "9-17:30" 
     }, 
     "C2": { 
     "Name": "C2name", 
     "When": "9-17:30" 
     }, 
     "C3": { 
     "Name": "C3name", 
     "When": "9-17:30" 
     } 
    } 
    }] 
} 

я использую функцию

$.ajax({... 

для получения данных из JSON. Однако я не могу получить детали части «Содержащая», которую я хочу вызвать в цикле for.

Так что я хочу что-то вроде data.courses[0].Containing.(insert part with for-loop-variable).Name

Как я могу это сделать?

Большое спасибо! :)

+0

AppleCow вы вокруг? –

ответ

1

После анализа JSON (который, вероятно, делает для вас $.ajax), вы больше не имеете дело с JSON, вы имеете дело с объектами JavaScript с вложенными свойствами.

Вещь, которую Вы хотите перебрать является объектом, так что вы можете перебрать свои имена свойств с использованием for-in или Object.keys (возвращает массив собственных, перечислимых свойств объекта), который мы можем использовать forEach на:

var parsedData = { 
 
    "courses": [{ 
 
    "Name": "Course1", 
 
    "Containing": { 
 
     "C1": { 
 
     "Name": "C1name", 
 
     "When": "9-17:30" 
 
     }, 
 
     "C2": { 
 
     "Name": "C2name", 
 
     "When": "9-17:30" 
 
     }, 
 
     "C3": { 
 
     "Name": "C3name", 
 
     "When": "9-17:30" 
 
     } 
 
    } 
 
    }] 
 
}; 
 
var containing = parsedData.courses[0].Containing; 
 
Object.keys(containing).forEach(function(key) { 
 
    snippet.log(containing[key].Name); 
 
});
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

+0

Wow ... 'snippet.log()'. Wooh! ': P' –

2

Вы не можете использовать этот путь с . нотации. То, что я имею в виду:

var container = "C1"; 
data.courses[0].Containing.container; // This doesn't work. 

Вы должны использовать [] путь:

var container = "C1"; 
data.courses[0].Containing[container]; // This works. 
0

На том же образом, вы можете использовать непосредственно каждую функцию JQuery

var parsedData = { 
 
    "courses": [{ 
 
    "Name": "Course1", 
 
    "Containing": { 
 
     "C1": { 
 
     "Name": "C1name", 
 
     "When": "9-17:30" 
 
     }, 
 
     "C2": { 
 
     "Name": "C2name", 
 
     "When": "9-17:30" 
 
     }, 
 
     "C3": { 
 
     "Name": "C3name", 
 
     "When": "9-17:30" 
 
     } 
 
    } 
 
    }] 
 
}; 
 

 

 
$.each(parsedData.courses[0].Containing, function(key, value) { 
 
    console.log(value.Name); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

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