2012-04-12 102 views
2

我有以下代码不起作用。我试图将文本“约翰”推到对象的末尾。我更熟悉PHP,并且这在PHP中起作用。如何将值分配给JSON对象

var data = {}; 
var field_name = "first_name"; 

data[field_name]['answers'][] = "John"; 

alert(data['first_name']['answers'][0]); 

编辑:

我也试过以下,并没有奏效。

var data = {}; 
var field_name = "first_name"; 
var i=0; 

data[field_name]['answers'][i] = "John"; 

alert(data['first_name']['answers'][0]); 

回答

1

尝试:

var data = {}; 
var field_name = "first_name"; 
data[field_name] = {}; 
data[field_name].answers = []; 
data[field_name].answers.push("John"); 

alert(data['first_name'].answers[0]); 
+0

那不是出于某种原因的工作。我完全按照写法测试了您的代码。 – Stephen305 2012-04-12 16:29:26

+0

添加另一条线请再试 – 2012-04-12 16:34:24

+0

答案需要在对象第一:http://jsfiddle.net/mplungjan/EVsM2/ 变种dataObj = { “first_name的”:{ “答案”:[ “约翰”] } } – mplungjan 2012-04-12 16:36:06

0

人们不能任意地限定多个阵列维度或动态地扩展,如PHP边界将愉快地允许。你需要做这样的事情(简写[]符号也可以代替新的Array()我只是喜欢这种方式使用。):

var data = {}; 
var field_name = "first_name"; 

//Create the new dimensions 
data[field_name] = new Array(); 
data[field_name]['answers'] = new Array(); 
//Push the new element 
data[field_name]['answers'].push("John"); 

alert(data['first_name']['answers'][0]);​​​​​​​​​​​​​ 
+0

删除var data = new Array()应该是var data = {}和data [field_name] = new Array(); 应该是data [field_name] = {}和 data [field_name] ['answers'] = new Array(); 应该是数据[field_name] ['answers'] = []; – mplungjan 2012-04-12 16:38:28