我需要将表解析为JSON,我找到了这个解决方案并且它可以工作:
var tab=[{"value":"1.0","label":"Alabama"},{"value":"2.0","label":"Alaska"}, {"value":"3.0","label":"American Samoa"}];
var myJsonString = JSON.stringify(tab);
var jsonData = $.parseJSON(myJsonString);
问题在于我动态声明二维表格标签'它不起作用:
var tab_desc1= new Array(3);
tab_desc1[0]=new Array(2);
tab_desc1[0]["value"]="1.0";
tab_desc1[0]["label"]="Alabama";
tab_desc1[1]=new Array(2);
tab_desc1[1]["value"]="2.0";
tab_desc1[1]["label"]="Alaska";
tab_desc1[2]=new Array(2);
tab_desc1[2]["value"]="3.0";
tab_desc1[2]["label"]="American Samoa";
var myJsonString = JSON.stringify(tab_desc1);
var jsonData = $.parseJSON(myJsonString);
逻辑上我的声明包含错误,我无法看到它。 任何帮助!谢谢。
答案 0 :(得分:2)
tab_desc1[0] = new Array(2);
应该是
tab_desc1[0] = {};
和其他人一样。
但是我不知道将变量字符串化为字符串然后再解析它的目的。
答案 1 :(得分:1)
问题是数组和对象不是一回事。
您的第一个代码会创建一个对象的数组。
您的第二个代码创建了一个 arrays 数组,但随后在这些数组上设置了非数字属性。 JS数组是一种对象,因此设置非数字属性不是错误,但stringify()
只包含数字属性。你需要这样做:
var tab_desc1 = []; // Note that [] is "nicer" than new Array(3)
tab_desc1[0] = {}; // NOTE the curly brackets to create an object not an array
tab_desc1[0]["value"] = "1.0";
tab_desc1[0]["label"] = "Alabama";
tab_desc1[1] = {}; // curly brackets
tab_desc1[1]["value"] = "2.0";
tab_desc1[1]["label"] = "Alaska";
tab_desc1[2] = {}; // curly brackets
tab_desc1[2]["value"] = "3.0";
tab_desc1[2]["label"] = "American Samoa";
var myJsonString = JSON.stringify(tab_desc1);
var jsonData = $.parseJSON(myJsonString);
你也可以这样做:
var tab_desc1 = [];
tab_desc1[0] = {"value":"1.0","label":"Alabama"};
tab_desc1[1] = {"value":"2.0","label":"Alaska"};
tab_desc1[2] = {"value":"3.0","label":"American Samoa"};
(另外,为什么要进行字符串化然后立即解析以获取相同的对象?)