簡體   English   中英

如何從json檢索值

[英]How to retrieve values from json

我是json的新手,所以plz確實幫了我忙。 我正在嘗試從此json檢索值,例如:我想從此json獲取fname。 我如何獲得這個價值? 我嘗試了showdata.fname,showdata.id [0] .fname,但是我不知道這是一個愚蠢的要求,但請幫助我。

var showdata = {
    "fc1d3f54-bcd3-2c4d-2626-cb9904e63800": {
        "fname": "Nitish",
        "lname": "pakhare",
        "phoneno": "4545445",
        "id": "fc1d3f54-bcd3-2c4d-2626-cb9904e63800"
    },
    "6ae08ee6-b02d-0eeb-4ead-1d52bbdadf5e": {
        "fname": "Ashish",
        "lname": "Pakahre",
        "phoneno": "454545",
        "id": "6ae08ee6-b02d-0eeb-4ead-1d52bbdadf5e"
    },
    "7e418c15-17c1-da8e-b614-b362f7937eb9": {
        "fname": "Arpita",
        "lname": "kimar",
        "phoneno": "454545",
        "id": "7e418c15-17c1-da8e-b614-b362f7937eb9"
    }
}

此代碼記錄該對象內的所有fname屬性。

for( var key in showdata ) {
  if ( showdata.hasOwnProperty( key ) ) {
     console.log( showdata[ key ][ 'fname' ] );
  }
}

實際上,您有一個具有多個屬性的對象。 上面的代碼遍歷所有屬性,檢查該對象中是否實際存在該屬性(這解決了JavaScript對象原型性質帶來的一些問題)並記錄了值。 您應該用程序邏輯替換日志記錄。

使用數組而不是對象的實現會更容易。 這樣,您可以使用所有本機JavaScript數組功能(例如map等)。但是,在這種情況下,您會松開鍵(除非您將它們添加為子對象中的附加屬性)。 如下所示:

var showdata = [
    {
        "key": "fc1d3f54-bcd3-2c4d-2626-cb9904e63800",
        "fname": "Nitish",
        "lname": "pakhare",
        "phoneno": "4545445",
        "id": "fc1d3f54-bcd3-2c4d-2626-cb9904e63800"
    },
    {
        "key": "6ae08ee6-b02d-0eeb-4ead-1d52bbdadf5e",
        "fname": "Ashish",
        "lname": "Pakahre",
        "phoneno": "454545",
        "id": "6ae08ee6-b02d-0eeb-4ead-1d52bbdadf5e"
    },
    {
        "key": "7e418c15-17c1-da8e-b614-b362f7937eb9",
        "fname": "Arpita",
        "lname": "kimar",
        "phoneno": "454545",
        "id": "7e418c15-17c1-da8e-b614-b362f7937eb9"
    }
];

showdata.fc1d3f54-bcd3-2c4d-2626-cb9904e63800.fname應該是答案,但我不確定它是否可以工作。

showdata["fc1d3f54-bcd3-2c4d-2626-cb9904e63800"].fname

實際上,這是正確的語法。

看到這個修補匠: JSON Tinker

如果要訪問它們,可以執行以下操作:

showdata.fc1d3f54-bcd3-2c4d-2626-cb9904e63800.fname

但這將對其進行硬編碼。 相反,您可以通過循環訪問它們。

var key, entry;

for(key in showdata){
    if(showdata.hasOwnProperty(key)){
        entry = showdata[key];
        //entry.fname
        //entry.lname
        //entry.phoneno
        //entry.id, which would be the same as key in your case
    }
}

您還可以考慮使用數組,這樣就不會對鍵進行硬編碼:

var showdata = [
    {
        "fname": "Nitish",
        "lname": "pakhare",
        "phoneno": "4545445",
        "id": "fc1d3f54-bcd3-2c4d-2626-cb9904e63800"
    }, {
        "fname": "Ashish",
        "lname": "Pakahre",
        "phoneno": "454545",
        "id": "6ae08ee6-b02d-0eeb-4ead-1d52bbdadf5e"
    }, {
        "fname": "Arpita",
        "lname": "kimar",
        "phoneno": "454545",
        "id": "7e418c15-17c1-da8e-b614-b362f7937eb9"
    }
]

//showdata[0].fname

看起來您正在使用長的十六進制字符串作為鍵,您將訪問類似

showdata['fc1d3f54-bcd3-2c4d-2626-cb9904e63800']['fname']

方括號表示法比點表示法更可取,因為它在查找內容時更健壯,尤其是對於像這樣的長鍵。

showdata['fc1d3f54-bcd3-2c4d-2626-cb9904e63800'].fname 

也可以

如果希望使用整數對它進行索引,則可以將其結構化為:

var showdata = [
    { 
    "fname": "Nitish",
    "lname": "pakhare",
    "phoneno": "4545445",
    "id": "fc1d3f54-bcd3-2c4d-2626-cb9904e63800"
    },
    {
    "fname": "Ashish",
    "lname": "Pakahre",
    "phoneno": "454545",
    "id": "6ae08ee6-b02d-0eeb-4ead-1d52bbdadf5e"
    }
]

作為對象數組,則可以

showdata[0].fname

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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