2015-12-16 181 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