2012-07-30 36 views
1

有沒有辦法用變量創建JSON對象ID?json - 根據變量創建json對象ID

var json_result = []; 
var id = 20; 
json_result.push({id: {parentId: parentId, position: position}}); 

這樣會產生一個值爲'id'的json對象作爲id。我想達到以'20'爲關鍵。

編輯:包括解決方案:

var json_result = {}; 
var id = 20; 
json_result[id] = {parentId: parentId, position: position}; 

現在您可以訪問的parentId和位置是這樣的:

json_result[20].position 
json_result[20].parentId 
+0

這是一個* JavaScript對象*,而不是一個JSON對象。 – 2012-07-30 14:56:37

回答

4

你不能寫這樣的對象字面(它不是一個「JSON對象」由方式;只是一個簡單的Javascript對象),但你可以這樣做:

var o = {}; 
o[id] = {parentId: parentId, position: position}; 
json_result.push(o); 
+0

謝謝。這工作。但我想我應該可以像這樣訪問該值:console.log(json_result [20]);但它不起作用。任何想法我必須改變?基本上我想訪問ID 20的parentid和位置,而不需要遍歷整個數組。 – 2012-07-30 15:18:59

+0

@TomTom:當你將'o'推入'json_result'時,你不會給它一個等於'id'的鍵。如果你想這樣做,只需使用'o'作爲你的'json_result',並刪除所有對原始'json_result'的引用(這是一個數組;你根本不需要這個註釋)。 – Jon 2012-07-30 15:24:01

+0

謝謝,現在我明白了。在我的問題中包含解決方案。 – 2012-07-30 15:33:02

1
var json_result = []; 
var id = 20; 
var obj = {}; 
obj[id] = "something"; 
json_result.push(obj); 
0

這是JSON規範說鍵應該是字符串的原因之一。您的JSON應該看起來像這樣:

{ 
    "20": { 
    "parentId": ..., 
    "position": ...} 
} 

...或類似的。退房http://json.org/example.html

+0

他試圖弄清楚如何讓'20'成爲關鍵。另外,OP真的意味着* JavaScript對象*,而不是JSON對象。 – 2012-07-30 14:58:17

+0

啊,現在明白了,謝謝 – 2012-07-30 15:00:44

0

是的,你可以做這樣的:

var obj = {}; 
obj[id] = {parentId: parentId, position: position}; 
json_result.push(obj);