如何将JSON字符串更改为对象数组?

时间:2017-08-08 15:09:19

标签: javascript arrays json

这应该很简单,但我已经用了几天时间弄明白,如何将动态创建的JSON对象字符串更改为数组。我想要的是javascript:

var col_model =[ { 'label': 'Name', 'name': 'Name', 'key': 'true', 'width': '75', 'hidden': 'false' }, { 'label': 'FirstName', 'name': 'FirstName' }];

它在我的模型中完美运行,Chrome浏览器接受[对象,对象,对象]。

但是,当我动态创建它时,Chrome浏览器不接受它作为json对象的数组。示例:我首先将其创建为字符串:

var col_model = { 'label': 'Name', 'name': 'Name', 'key': 'true', 'width': '75', 'hidden': 'false' }, { 'label': 'FirstName', 'name': 'FirstName' };

col_model=[col_model];

但是,即使我在selcon dline中添加[]也不一样。我也试图像这样解析它,但它也不起作用:

col_model = $.parseJSON('[' + col_model + ']');

2 个答案:

答案 0 :(得分:2)

我不太清楚你想在这里实现什么。假设您要将对象数组(可用作字符串)转换为实际的对象数组,请尝试以下操作。

您的对象数组为字符串

var col_model ="[ { 'label': 'Name', 'name': 'Name', 'key': 'true', 'width': '75', 'hidden': 'false' }, { 'label': 'FirstName', 'name': 'FirstName' }];"

注意两端的"

您可以使用eval语句将ti转换回对象数组

var newObjArray = eval(col_model)

话虽如此,在使用eval时必须小心,因为它非常强大且同时具有潜在的危险性。请阅读here

答案 1 :(得分:1)

看看您的控制台浏览器,肯定会收到类似意外字符串的错误。

那是因为:

    var col_model = { 'label': 'Name', 'name': 'Name', 'key': 'true', 'width': '75', 'hidden': 'false' }, { 'label': 'FirstName', 'name': 'FirstName' };

您不能在变量中存储由逗号分隔的两个对象。或者是一个对象数组或是一个单个对象,但你所写的是不正确的。

然后,您可以以正确的方式访问该对象,并设置其值并解析它。

我希望它可以帮助你。