我正在尝试访问JSON文件的某些字段的值。
console.log( objects.assignments.header.report_type );
我想打印出HOMEWORK
$.ajax({
url: "/BIM/rest/report/assignment",
type: "POST",
dataType : "json",
data: {
assessmentId: "206a9246-ce83-412b-b8ad-6b3e28be44e3",
classroomId: "722bfadb-9774-4d59-9a47-89ac9a7a8f9a"
},
success: function( objects ) {
console.log( objects.assignments.header.report_type );
// Result : Uncaught TypeError: Cannot read property 'report_type' of undefined
{
"assignments": [
{
"assignmentId": "SUMMARY",
"name": "Summary",
"header": {
"section_num": "9.4",
"report_type": "HOMEWORK",
"problem_set": "Summary",
"start_time": null,
"student_am": 0,
"student_total": 5,
"due_time": null,
"submit_am": 0,
"submit_total": 0,
"avg_score": "0.0",
"danger": 0,
"danger_list": "",
"warning": 0,
"warning_list": "",
"success": 0,
"success_list": ""
}
}
]
}
如何正确访问这些数据?
任何提示/帮助对我来说意义重大。
提前致谢。
答案 0 :(得分:3)
$。AJAX({
url: "/BIM/rest/report/assignment",
type: "POST",
dataType : "json",
data: {
assessmentId: "206a9246-ce83-412b-b8ad-6b3e28be44e3",
classroomId: "722bfadb-9774-4d59-9a47-89ac9a7a8f9a"
},
success: function( objects ) {
console.log( objects.assignments[0].header.report_type );
答案 1 :(得分:3)
由于assignments
是一个数组,因此您必须指定一个索引来访问其中的属性。要访问使用:
objects.assignments[0].header.report_type
答案 2 :(得分:3)
assignments
是一个数组,因此您需要访问特定元素。
console.log(objects.assignments[0].header.report_type);
^^^
答案 3 :(得分:1)
{}表示您有一个具有键值对的对象
[]表示它是一个具有索引(如果你喜欢的位置),值对的数组。
var myObject = {
'a_key':'A_value',
'b_key':'B_value',
'c_key':'C_value'
};
var myArray = [
'A_value',
'B_value',
'C_value'
];
要使用密钥
访问对象的值 console.log(myObject.a) // A_value
console.log(myObject['c']) // C_value
索引可以使用数组中的值(从零开始)
console.log(myArray[0]) // A_value
console.log(myArray[2]) // C_value
您可以拥有一个对象数组或一个包含某些数组的对象
所以在你的例子中它将是:
console.log( objects.assignments[0].header.report_type )
^ ^ ^ ^ ^
variable key index key key
name 1st lvl 1st lvl 2nd lvl
答案 4 :(得分:0)
假设您的数组中有多个值并且想要全部访问它们:
for (var i = 0; i < objects.assignments.length; i++) {
console.log(objects.assignments[i].header.report_type);
}