[英]How do I access a single object from JSON wih javascript?
我有一個JSON列表,該列表來自具有多個同級數據庫的一個表。
"PlayerNumbers":{"PlayerNumber":[
{"Section":"1","Team":"1","Direction":"N","Number":"00280149","Name":" ANSART A","Updated":"False","TimeLog":"","Processed":"False"},
{"Section":"1","Team":"1","Direction":"S","Number":"00280131","Name":"ANSART Y","Updated":"False","TimeLog":"","Processed":"False"},
{"Section":"1","Team":"2","Direction":"N","Number":"01964990","Name":" LAHAYE B","Updated":"False","TimeLog":"","Processed":"False"}]}
說我需要閱讀“名稱”鍵,其中Section = 1和Team = 2,Direction = N。
編輯:當然,我將使用js解析對象
Javascript的語法是什么?
我將假設您根本不處理JSON,而是處理從JSON 解析的對象樹。 我將假設您給出的是對象定義的內容,例如JSON:
{
"PlayerNumbers": {
"PlayerNumber": [
{
"Section": "1",
"Team": "1",
"Direction": "N",
"Number": "00280149",
"Name": " ANSART A",
"Updated": "False",
"TimeLog": "",
"Processed": "False"
},
{
"Section": "1",
"Team": "1",
"Direction": "S",
"Number": "00280131",
"Name": "ANSART Y",
"Updated": "False",
"TimeLog": "",
"Processed": "False"
},
{
"Section": "1",
"Team": "2",
"Direction": "N",
"Number": "01964990",
"Name": " LAHAYE B",
"Updated": "False",
"TimeLog": "",
"Processed": "False"
}
]
}
}
因此,在解析了JSON之后,您將擁有一個具有PlayerNumbers
屬性的對象,該對象引用具有PlayerNumber
屬性的對象,該對象引用具有所需信息的對象數組。
因此,您將遍歷數組,直到找到第一個匹配的條目(假設您只想要第一個):
var name;
obj.PlayerNumbers.PlayerNumber.some(function(entry) {
if (entry.Section == "1" && Team == "2" && entry.Direction == "N") {
name = entry.Name;
return true;
}
return false;
});
如果您需要所有匹配項:
var names = obj.PlayerNumbers.PlayerNumber.filter(function(entry) {
return (entry.Section == "1" && Team == "2" && entry.Direction == "N");
}).map(function(entry) { return entry.Name; });
上面兩種方法都使用Array
ES5功能,而這些功能在過時的引擎上是缺少的。 如果您需要支持過時的引擎,則可以對上述所有內容進行“填充”或“填充”,搜索應查找必要的填充/填充。
var playersObject = {
"PlayerNumbers": {
"PlayerNumber": [{
"Section": "1",
"Team": "1",
"Direction": "N",
"Number": "00280149",
"Name": " ANSART A",
"Updated": "False",
"TimeLog": "",
"Processed": "False"
}, {
"Section": "1",
"Team": "1",
"Direction": "S",
"Number": "00280131",
"Name": "ANSART Y",
"Updated": "False",
"TimeLog": "",
"Processed": "False"
}, {
"Section": "1",
"Team": "2",
"Direction": "N",
"Number": "01964990",
"Name": " LAHAYE B",
"Updated": "False",
"TimeLog": "",
"Processed": "False"
}]
}
};
function getParticularPlayer(section, team, direction) {
return playersObject.PlayerNumbers.PlayerNumber.filter(function(player) {
return (player.Section===section && player.Team===team && player.Direction===direction);
});
}
現在,您可以使用
var results = getParticularPlayer("1","1","N");
它將返回您匹配的玩家數組。 如果您確定總是只返回一名玩家,則可以使用results[0]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.