如何访问多维JSON数据?

时间:2015-07-13 12:55:03

标签: javascript jquery arrays ajax 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": ""
      }
    }
  ]
}

如何正确访问这些数据?

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

提前致谢。

5 个答案:

答案 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);
}