2011-05-16 57 views
2

我收到來自PHP獲取請求的JSON對象。它看起來像這樣:閱讀使用JS的JSON元素

data == {"user_id":"7","emp_type_id":[{"0":"11","1":"10"}]} 

我需要訪問emp_type_id(在這種情況下「11」和「10」)內的項目。

我能夠使用data [「user_id」]很好地訪問user_id,但無法弄清楚如何獲取其他項目。我試過以下變體:

eti=data["emp_type_id"]; 
var myVar = eti[0]; 

我想循環遍歷emp_type_id中的所有項目,並將它們添加到JS數組中。

回答

1

奧尼爾的回答將幫助,但我認爲你有其他問題。您的JSON結構看起來錯

a) data == {"user_id":"7","emp_type_id":[{"0":"11","1":"10"}]} 

應該

b) data == {"user_id":"7","emp_type_id":["11","10"]} 

這是英文

一)emp_type_id其中有兩個字段01一個對象的數組?

B)emp_type_id的兩個項目的數組值1110

如果它應該是B),然後你的JSON是錯誤的。

+1

您可能想要重新說明一下--JSON不是'錯誤的',它可能是不必要的,低效的或複雜的,但它當然是有效的。 – 2011-05-16 20:22:30

+0

嗯,我想應該是b)。我真的有這個開始,但當我不知道如何獲得這些值(認爲他們可能需要一個關鍵),我認爲這是錯誤的,並將其改爲其他版本(json_encode($ emp_type_id,JSON_FORCE_OBJECT );與json_encode($ emp_type_id);)。這是否會改變我如何訪問這些值? – vee 2011-05-16 20:24:12

+0

@ no.go - 確定我改變了它「+結構」激活。 – Hogan 2011-05-16 20:24:17

0

試試這個:

var eti = data.emp_type_id; 
var myVar = eti[0]; 
1

data是一個具有兩個屬性user_id和emp_type_id的對象。 emp_type_id是具有一個元件(???)的陣列,該元素與屬性0和對象1

有很多從對象讀取屬性兩種方式:

var prop = data['emp_type_id']; 
var prop = data.emp_type_id; 

如果有「怪異」的屬性名稱,那麼你將不得不使用方括號技術。

所以

var prop0 = data.emp_type_id[0].0; 
var prop1 = data.emp_type_id[0].1; 

我擔心「0」和「1」,將屬於「怪異的屬性名稱」類別下,所以你可能需要做

var prop0 = data.emp_type_id[0]["0"]; 
var prop1 = data.emp_type_id[0]["1"]; 
+0

+1 - 這個答案清楚地說明了他使用的json的語義錯誤。 – Hogan 2011-05-16 20:36:52

2

使用for in

var data = {"user_id":"7","emp_type_id":[{"0":"11","1":"10"}]}; 
var eti = data["emp_type_id"]; 
var myVar = eti[0]; 
for(var entry in myVar){ 
    alert(entry + ":\t" + myVar[entry]); 
} 

Running JSBIN Example

+0

這會起作用,但我認爲如果他在他的帖子中修復了像Hogan一樣的JSON,這是最好的。 – 2011-05-16 20:22:37

0
var eti = data.emp_type_id; 
var myVar = eti[0]; 

for(var key in myVar){ 
    myVar[key]; 
}