我是json的新手,所以请帮我解决这个问题。 我正试图从这个json中检索值,例如:我想从这个json中获取fname。 我如何获得这个价值; 我试过showdata.fname,showdata.id [0] .fname,但没有得到 我知道这是一个愚蠢的要求,但PLZ帮助我。
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"
}
}
答案 0 :(得分:1)
此代码记录此对象内的所有fname
属性。
for( var key in showdata ) {
if ( showdata.hasOwnProperty( key ) ) {
console.log( showdata[ key ][ 'fname' ] );
}
}
实际上你有一个具有多个属性的对象。上面的代码遍历所有属性,检查属性是否实际存在于此对象中(这解决了来自JavaScript对象的原型性质的一些问题)并记录了值。您应该用程序逻辑替换日志记录。
Easier是使用数组而不是对象的实现。这样您就可以使用所有本机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"
}
];
答案 1 :(得分:0)
showdata.fc1d3f54-bcd3-2c4d-2626-cb9904e63800.fname
应该是答案,但我不确定它会起作用。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您想访问它们,可以执行以下操作:
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
答案 4 :(得分:0)
看起来你正在使用长HEX字符串作为键,你可以访问像
这样的项目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