2015-07-13 65 views
2

我试图访问我的JSON文件的某些字段的值。如何访问多维JSON数据?

console.log(objects.assignments.header.report_type);

我想打印出来HOMEWORK


的Javascript

$.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 

JSON数据 - 我从AJAX调用回

{ 
    "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": "" 
     } 
    } 
    ] 
} 

如何正确访问这些数据?

任何提示/帮助对我来说意义重大。

在此先感谢。

回答

3

assignments是一个数组,所以您需要访问特定元素

console.log(objects.assignments[0].header.report_type); 
           ^^^ 
3

$阿贾克斯({

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); 
+0

头是一个对象。它应该是header.report_type – nikhil

+0

快速编辑。我没有办法。 ... – ihue

+0

是的...这是在赶时间:) – AkshayJ

3

由于assignments是一个数组为此,必须指定访问其内部性能的索引来访问使用。

objects.assignments[0].header.report_type 
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 
0

假设你有多个值的数组中,并希望访问所有这些:

for (var i = 0; i < objects.assignments.length; i++) { 
    console.log(objects.assignments[i].header.report_type); 
}