2015-12-16 125 views
0

我有以下的JSON我从我的数据库送回来,我试图访问“名”和“联系人的钥匙:访问JSON数组

[ 
    { 
    "key": { 
     "name": "a", 
     "kind": "Users", 
     "path": [ 
     "Users", 
     "a" 
     ] 
    }, 
    "data": { 
     "fullname": "a", 
     "password": "a", 
     "contacts": [ 
     "bob", "john" 
     ] 
    } 
    }, 
    { 
    "key": { 
     "name": "b", 
     "kind": "Users", 
     "path": [ 
     "Users", 
     "b" 
     ] 
    }, 
    "data": { 
     "fullname": "b", 
     "password": "b", 
     "contacts": [ 
     "john" 
     ] 
    } 
    } 
] 

我的Java脚本的回调函数看起来是这样的,并里面我试图从可变实体打印值:

dataset.get(keys, function(err, entities) {}); 

我想:entities.key.name[0]获得头名的键值,但它不工作。我也坚持如何获取联系人变量。

+0

'实体[0] .key.name' – Tushar

回答

1

你可以尝试这样的事情:

var json = [{ 
 
    "key": { 
 
    "name": "a", 
 
    "kind": "Users", 
 
    "path": [ 
 
     "Users", 
 
     "a" 
 
    ] 
 
    }, 
 
    "data": { 
 
    "fullname": "a", 
 
    "password": "a", 
 
    "contacts": [ 
 
     "bob", "john" 
 
    ] 
 
    } 
 
}, { 
 
    "key": { 
 
    "name": "b", 
 
    "kind": "Users", 
 
    "path": [ 
 
     "Users", 
 
     "b" 
 
    ] 
 
    }, 
 
    "data": { 
 
    "fullname": "b", 
 
    "password": "b", 
 
    "contacts": [ 
 
     "john" 
 
    ] 
 
    } 
 
}] 
 

 
function getJSONValues(){ 
 
    var names = [], contacts = []; 
 
    for (var obj in json){ 
 
    console.log(json[obj]); 
 
    
 
    names.push(json[obj].key.name); 
 
    contacts.push(json[obj].data.contacts.splice(0)); 
 
    } 
 
    
 
    console.log(names, contacts) 
 
} 
 

 
getJSONValues();

1

使用控制台所看到的就是:

var entities = [ 
 
    { 
 
    "key": { 
 
     "name": "a", 
 
     "kind": "Users", 
 
     "path": [ 
 
     "Users", 
 
     "a" 
 
     ] 
 
    }, 
 
    "data": { 
 
     "fullname": "a", 
 
     "password": "a", 
 
     "contacts": [ 
 
     "bob", "john" 
 
     ] 
 
    } 
 
    }, 
 
    { 
 
    "key": { 
 
     "name": "b", 
 
     "kind": "Users", 
 
     "path": [ 
 
     "Users", 
 
     "b" 
 
     ] 
 
    }, 
 
    "data": { 
 
     "fullname": "b", 
 
     "password": "b", 
 
     "contacts": [ 
 
     "john" 
 
     ] 
 
    } 
 
    } 
 
]; 
 
console.log(entities); 
 
console.log(entities[1].key.name); 
 
console.log(entities[1].data.contacts[0]);

1

如果到这个JSON对象被分配到的变量是entities

然后

entities[ 0 ][ "key" ].name; //will give you name 
entities[ 0 ][ "data" ].contacts; //will give you contacts 

现在你可以做到作为

entities[ counter ][ "key" ].name; //will give you name 
entities[ counter ][ "data" ].contacts; //will give you contacts 
+0

谢谢!有用! – user2924127

+0

@ user2924127乐意提供帮助。 – gurvinder372

1

您有一个数组。所以你必须使用索引从它读取一个项目。

entities[0] 

返回第一个对象。

{ 
"key": { 
    "name": "a", 
    "kind": "Users", 
    "path": [ 
    "Users", 
    "a" 
    ] 
}, 
"data": { 
    "fullname": "a", 
    "password": "a", 
    "contacts": [ 
    "bob", "john" 
    ] 
} 
} 

您可以使用点表示法或括号表示法来读取对象的值。举例来说,如果你想阅读的关键,就试试这个:

entities[0].key 

现在key具有下列对象的引用:

{ 
    "name": "a", 
    "kind": "Users", 
    "path": [ 
    "Users", 
    "a" 
    ] 
} 

所以,如果你想获得name,只是做一个步骤:

entities[0].key.name 

这同样适用于在contacts

entities[0].data.contacts 
1

使用entities[ 0 ][ "key" ].name;为实体是array