2015-02-08 40 views
0

我有這個JSON對象,我想用javascript解析它。我能夠獲得B,A和208,但是我無法從時間獲取數據。如何用JavaScript檢索JSON中的子數組元素?

{ 
"room":[ 
    {"campusName":"B", 
    "buildingCode":"A", 
    "roomNumber":"208", 
    "times":[ 
      "7-8", "9-10" 
    ] 
    } 
] 
} 

$(document).ready(function(){ 
    $.getJSON("data.json", function(data){ 
    $.each(data.room, function(data){ 
     $("ul").append("<li>campus: "+this['campusName']+"</li><li>building: "+this['buildingCode']+"</li>"); 
     $.each(data.times, function(){ 
      $("ul").append("<li>stuff: "+this['times']+"</li>") 
     }); 
    }); 
    }); 
}); 
+3

不應該你的時間數組不包含一個對象,只是字符串即:''times「:[」7-8「,」9-10「]'?那麼這將是你的價值 – 2015-02-08 07:25:07

+0

這是無效的JSON寫入 – zzzzBov 2015-02-08 07:25:53

+0

在'$ .getJSON'和'$ .each'中使用相同的變量名'data'確實令人困惑。 – Barmar 2015-02-08 07:27:33

回答

0

試試下面的代碼爲您JSON

var data = { 
"room":[ 
    {"campusName":"B", 
    "buildingCode":"A", 
    "roomNumber":"208", 
    "times":[ 
      "7-8", "9-10" 
    ] 
    } 
] 
} 

然後你可以用下面讓你的願望的結果:

data.room[0].campusName; // ==> B 
data.room[0].buildingCode; // ==> A 
data.room[0].roomNumber; // ==> 208 
data.room[0].times; // ==> ["7-8", "9-10"] 

EDIT2:

$.each(data.room, function(i) { 
    console.log(data.room[i].campusName); 
    console.log(data.room[i].buildingCode); 
    console.log(data.room[i].roomNumber); 
    console.log(data.room[i].times); 
}); 

輸出

B 
A 
208 
["7-8", "9-10"] 

EDIT1:

欲瞭解更多詳情,請訪問JSON syntax以及如何訪問它。

+0

感謝您的幫助! – minionhacking 2015-02-08 08:01:43

+0

他和JSON在他的問題上有什麼區別? – Barmar 2015-02-08 22:08:11

+0

這是一樣的,我只是把它存儲在一個變量'data'中,這就是我寫它的原因。沒有其他的... – 2015-02-09 05:27:35

0

data.times的元素只是字符串,而不是對象,所以你不應該索引它們。它應該只是:

$.each(data.times, function() { 
    $("ul").append("<li>stuff: " + this + "</li>"); 
}); 

而且,在你第一次$.each()回調參數列表是錯誤的。它應該是function(i, data) - 第一個參數是數組索引(如果您正在迭代對象,則爲對象屬性名稱),第二個參數爲值。

var data = { 
 
    "room": [{ 
 
    "campusName": "B", 
 
    "buildingCode": "A", 
 
    "roomNumber": "208", 
 
    "times": [ 
 
     "7-8", "9-10" 
 
    ] 
 
    }] 
 
}; 
 

 
$.each(data.room, function(i, data) { 
 
    $("ul").append("<li>campus: " + this['campusName'] + "</li><li>building: " + this['buildingCode'] + "</li>"); 
 
    $.each(data.times, function() { 
 
    $("ul").append("<li>stuff: " + this + "</li>"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul></ul>

+0

我試過這個,仍然只有B和A – minionhacking 2015-02-08 07:36:45

+0

問題出在外迭代函數的參數列表中。查看更新後的答案。 – Barmar 2015-02-08 22:15:11

相關問題