2015-10-29 121 views
-2

我有這個字符串:從json「undefined」獲取價值我錯了什麼?

[ 
{"id":"001", 
    "name":"Charlie"}, 
    {"id":"002", 
    "name":"Ellie"}, 
] 

他們,我保存這個字符串變量中,我分析它:

function parseJSON(string){ 
    var mylovelyJSON = JSON.stringify(string); 
    alert(mylovelyJSON[id]); 
} 

當我把我的警覺,我得和「不確定」,我也嘗試用「mylovelyJSON.id」,而且我也一樣。

不可能是Json?我從一個php數組中獲取這個字符串。

+0

您解析它錯了,應該是'JSON.parse(串); ' – antyrat

+0

與json.parse我得到「對象對象],[對象對象]」我沒有得到我的id的價值。 –

+0

你想通過「001」或數組的索引來引用它嗎?而你正在製作一個字符串,而不是一個對象。 'stringify'正在接受一個對象並且創建一個字符串。如果它產生的是對象,那麼比你已經擁有一個對象並且不需要解析它。 – epascarello

回答

10

有很多事情錯在這裏

你JSON無效

您有額外的,只是你需要刪除

您需要解析

JSON.stringify一個JavaScript數據結構轉換成JSON的字符串數組年底前。

您需要轉到其他方式並使用JSON.parse

方括號標記需要字符串

mylovelyJSON[id]需要的id的值(其是未申報所以,在這種情況下,將引發的參考誤差),並與作爲相同值的名稱獲取屬性。

您需要用mylovelyJSON["id"]mylovelyJSON.id

您有一個數組

你的JSON對象組成的數組,而不是單一的對象。

您需要從數組中獲取對象,然後才能訪問其屬性。

mylovelyJSON[0]["id"]


var json_text = '[{"id":"001","name":"Charlie"},{"id":"002","name":"Ellie"}]'; 
 

 
parseJSON(json_text); 
 

 
function parseJSON(string){ 
 
    var result_of_parsing_json = JSON.parse(string); 
 
    document.body.appendChild(
 
    document.createTextNode(result_of_parsing_json[0]["id"]) 
 
    ); 
 
}

-1

你JSON是無效的:

[ 
    { 
     "id": "001", 
     "name": "Charlie" 
    }, 
    { 
     "id": "002", 
     "name": "Ellie" 
    } 
] 

這應該更好地工作,你對線一個額外的冒號9

1

兩件事情都錯了

  1. 你的陣列與一個逗號結尾,這是無效的json
  2. 您正在將一個字符串轉換爲JavaScript,並且stringify做相反的。

所以這樣的事情可能工作:

var id = 0; 

function parseJSON(string){ 
    var mylovelyJSON = JSON.parse(string); 
    alert(mylovelyJSON[id]); 
} 

注意我假設id是一個全局變量...