2012-07-30 35 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);