2012-04-13 144 views
0

我正在用Javascript构造一个带有嵌套对象的JSON对象。是否有一种简单的方法可以在不使用eval()的Javascript中执行此操作?如何使用嵌套的JSON对象构建JSON对象

var data_json = "data = {'"+field_name+"':{'answers':{"; 
for(var i=0; i<answers.length; i++){ 
    data_json += "'" + i + "':" + "'" + answers[i] + "',"; 
} 
data_json = data_json.replace(/,$/,""); 
data_json = data_json + "}}}"; 

eval(data_json); 

结果:

data={'myfield':{'answers':{'0':'The answer', '1':'Another answer'}}}; 
+0

为什么要建造在JSON javascript,javascript IS json – dstarh 2012-04-13 15:55:47

+0

我不确定你的意思。 JSON是“JavaScript对象表示法”。它是一种与语言无关的数据交换格式。 – Stephen305 2012-04-13 16:10:58

+0

正确的,我应该扩大我的意思。 JavaScript对象是json,不需要使用字符串concat,只需在选定的答案中完成构建对象图形 – dstarh 2012-04-13 18:03:34

回答

3
var a, data = {}; 
data[field_name] = { "answers" : { } }; 
a = data[field_name]["answers"]; 

for(var i=0; i<answers.length; i++){ 
    a[i] = answers[i]; 
} 


console.log(data); 

作为边注,如果data[field_name]["answers"]只包含数字键,它应该是一个阵列,而不是一个对象,所以data[field_name]= { "answers" : [ ]};

3

就个人而言,我会使用JSON.stringify将您的javascript对象转换为json字符串格式。

查看更多信息。

http://msdn.microsoft.com/en-us/library/cc836459(v=vs.85).aspx

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/stringify

您还可以使用 JSON.parse走另一条路(从字符串对象)

var myObject = JSON.parse(myJSONtext, reviver); 

http://www.json.org/js.html

+0

是的,我已经读过eval()是危险的。 – Stephen305 2012-04-13 16:40:24