如何通过jquery / javascript访问这个JSON结构而不使用for-loop?

时间:2015-02-04 01:19:34

标签: javascript jquery json

我有这个JSON结构,我试图访问但没有取得多大成功。

{
   "COURSEDETAILS": {
      "BTR": {
         "CDFULLTITLE": "Bachelor of Health Sciences",
       },
      "BYTR": {
         "CDFULLTITLE": "Bachelor of Nursing (Preregistration)",
      }
   },
   "STUDENT": [
      {
         "WSDCOURSECODE": "BTR",
         "WSDSTUDENTID": 123456,
      },
      {
         "WSDSTUDENTID": 123456,
         "WSDCOURSECODE": "BYTR",
      }
   ]
}

我可以轻松访问学生部分。但不知道如何为每个情况访问CDFULLTITLE。 我不想使用for循环进行迭代。

每个学生的BHS和BNGU都会发生变化。 ID 234456的学生可能有WSDCOURSECODE = XXXX。

我可以通过data.STUDENT [0] .WSDCOURSECODE访问学生部分的课程代码。但我不知道如何使用它来访问COURSEDETAILS中的CDFULLTITLE。

也许问题是我的结构。请告知更好的方法吗?

有人可以帮忙吗?感谢

3 个答案:

答案 0 :(得分:0)

听起来你在问如何循环JavaScript对象中的属性?您可以使用for - in并以这种方式访问​​属性。



var data = {
   "COURSEDETAILS": {
      "BTR": {
         "CDFULLTITLE": "Bachelor of Health Sciences",
       },
      "BYTR": {
         "CDFULLTITLE": "Bachelor of Nursing (Preregistration)",
      }
   },
   "STUDENT": [
      {
         "WSDCOURSECODE": "BTR",
         "WSDSTUDENTID": 123456,
      },
      {
         "WSDSTUDENTID": 123456,
         "WSDCOURSECODE": "BYTR",
      }
   ]
};

for (var item in data.COURSEDETAILS) {
  document.getElementById('result').innerHTML += data.COURSEDETAILS[item].CDFULLTITLE + "<br/>";
}
&#13;
<div id="result" />
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果我理解正确,这就是你要找的东西:

var json = {
"COURSEDETAILS": {
   "BTR": {
      "CDFULLTITLE": "Bachelor of Health Sciences",
   },
   "BYTR": {
      "CDFULLTITLE": "Bachelor of Nursing (Preregistration)",
   }
},
"STUDENT": [
   {
      "WSDCOURSECODE": "BTR",
      "WSDSTUDENTID": 123456,
   },
   {
      "WSDSTUDENTID": 123456,
      "WSDCOURSECODE": "BYTR",
   }
]
};

for (var i in json.STUDENT) {
  var student = json.STUDENT[i];
  var fulltitle = json.COURSEDETAILS[student.WSDCOURSECODE].CDFULLTITLE;
  //use the title or the student
  console.log(student, fulltitle);
}

答案 2 :(得分:0)

这解决了我的问题。

data.COURSEDETAILS[data.STUDENT[0].WSDCOURSECODE].CDFULLTITLE

感谢那些花时间阅读/回复的人。 :)