繁体   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