簡體   English   中英

如何通過JSON和JavaScript訪問單個對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM