2015-09-07 36 views
3

內部數組對象裏面的值對象。如果我有這樣的:得到與JavaScript

{ 
    "data": [{ 
    "id": "4831", 
    "name": "Rui Vasco Martins", 
    "nickname": "rvgmartins", 
    "money_start": "10200", 
    "balance": "8000" 
    }] 
} 

我如何獲得的data->id值,data->name等?

+2

這是一個對象。 – j08691

+0

對象與數組,對象... – Chris

+0

好吧,對不起,我正在編輯。那我該怎麼做? –

回答

4

數據是多個。這意味着它是一個對象數組。沒有data-> id,只有data [n] - > id。在這種情況下,您可能需要所有可能的ID,並且您可以使用傳統的for循環或其他。

var i =0; 
var total = object.data.length; 
var ids = []; 
for(; i < total; i++) { 
    ids.push(data[ i ].id); 
} 
console.log(ids); 

如果你確定這裏只有1數據輸入,並且將永遠是,你可以直截了當去object.data[ 0 ].id以及!

請注意,「對象」是一個包含JSON :)

併爲下一次的變量,這裏有一個小提示: http://jsonlint.com/

希望幫助!

4

你的對象包含數組,所以你需要使用正確的指數,以進一步深入研究的對象;你的ID和名字恰好在第一個數組中,所以我們使用obj.data[0]

var obj = {"data":[{"id":"4831","name":"Rui Vasco Martins","nickname":"rvgmartins","money_start":"10200","balance":"8000","profit":"5010","nreload":"1","deal_id":"4813","created_at":"2015-05-27 12:54:33","updated_at":"2015-07-21 22:31:47"}],"status":200,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"url":"services/dashboard","headers":{"Accept":"application/json, text/pla`in, */*"}},"statusText":"OK"} 

您可以使用點或方括號,以進一步確定對象的屬性,這裏的點符號:

var data_id = obj.data[0].id; // "4831" 
var data_name = obj.data[0].name; // "Rui Vasco Martins" 

這裏的方括號標記:作爲內

var data_id = obj.data[0]['id']; // "4831" 
var data_name = obj.data[0]['name']; // "Rui Vasco Martins" 
+1

給出OP的問題,此答案是正確的,但它可能無法在所有使用情況下按預期工作。取決於包含的數據。如果它的數組中包含多個對象呢?請參閱@Bene回答 – Chris

+0

我想這將在後續問題中解決;我只回答提問。 – Data

+0

和JS linter更喜歡點符號,以防OP得到這個答案! – Bene

0

data有一個數組,你可以這樣做:

var myJson = { 
 
    "data": [{ 
 
     "id": "4831", 
 
      "name": "Rui Vasco Martins", 
 
      "nickname": "rvgmartins", 
 
      "money_start": "10200", 
 
      "balance": "8000", 
 
      "profit": "5010", 
 
      "nreload": "1", 
 
      "deal_id": "4813", 
 
      "created_at": "2015-05-27 12:54:33", 
 
      "updated_at": "2015-07-21 22:31:47" 
 
    }], 
 
     "status": 200, 
 
     "config": { 
 
     "method": "GET", 
 
      "transformRequest": [null], 
 
      "transformResponse": [null], 
 
      "url": "services/dashboard", 
 
      "headers": { 
 
      "Accept": "application/json, text/plain, */*" 
 
     } 
 
    }, 
 
     "statusText": "OK" 
 
} 
 
document.write('id: ' + myJson.data[0].id + '</br>name: ' + myJson.data[0].name);

0

首先,讓我們瞭解你的問題。要採取注:

  • 你有一個JSON,這是一個變量裏面,我會認爲這個變量是foo
  • 有作爲在Javascript data->id沒有這樣的事情。如果您有一個名爲data的對象,並且它有一個名爲id的成員,則將其引用爲data.id
  • name位於數組內。數組的元素是由一個指數,該指數從0開始引用的,所以,您的數組記爲data是具有一個單一的元素,這是第0個元素

所以一個數組,你可以得到idfoo.data[0].id,你可以得到的namefoo.data[0].name。然而,就本身而言,沒有任何東西強迫你的數組只有一個元素。如果有更多的元素,你需要能夠以某種方式決定哪些元素的idname你有興趣。此外,您的陣列不強制在所有擁有的元素。

每當看到這樣的JSON時,數組都被包圍在[]的括號內,並且對象被包圍在{}的括號內。