Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从json检索值_Javascript_Json - Fatal编程技术网

Javascript 如何从json检索值

Javascript 如何从json检索值,javascript,json,Javascript,Json,我是json新手,所以请大家在这方面帮助我。 我试图从这个json中检索值,例如:我想从这个json中获取fname,。 我如何得到这个值; 我尝试了showdata.fname,showdata.id[0].fname,但未获得 我知道这是一个愚蠢的要求,但请帮助我 var showdata = { "fc1d3f54-bcd3-2c4d-2626-cb9904e63800": { "fname": "Nitish", "lname": "pakhare

我是json新手,所以请大家在这方面帮助我。 我试图从这个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"
    }
}

showdata.fc1d3f54-bcd3-2c4d-2626-cb9904e63800.fname
应该是答案,但我不确定它是否有效。

此代码记录此对象中的所有
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
但这将是硬编码。相反,您可以通过循环访问它们

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

您的源代码不是JSON,而是普通的JavaScript对象文字符号。JSON是一种纯ASCII格式的表示。您正在寻找的是showdata[“fc1d3f54-bcd3-2c4d-2626-cb9904e63800”]。fname这将帮助您在hasOwnProperty(键)之后遗漏一个“)”,仅供参考
showdata[0].fname