如何从返回的JSON值创建JavaScript数组
我需要一个JavaScript变量,格式如下:如何从返回的JSON值创建JavaScript数组,javascript,arrays,json,servlets,Javascript,Arrays,Json,Servlets,我需要一个JavaScript变量,格式如下: var myColumns = [{ name : "Name", type : "string", visible : true, filterType : "search", width : 200 },
var myColumns = [{
name : "Name",
type : "string",
visible : true,
filterType : "search",
width : 200
},
{...}
]
{
"columnData": "data as per var myColumns above",
"cellData": {
"cell1": "value1",
"cell2": "value2"
}
}
根据JavaScript电子表格API
作为AJAX调用的一部分,我将返回一个JSON,格式如下:
var myColumns = [{
name : "Name",
type : "string",
visible : true,
filterType : "search",
width : 200
},
{...}
]
{
"columnData": "data as per var myColumns above",
"cellData": {
"cell1": "value1",
"cell2": "value2"
}
}
我的问题是,当我从ajax调用返回的JSON中获取“columnData”并将其设置为变量时,JavaScript将其解释为字符串,而不是数组
var myColumns = result.columnData;
var myData = result.cellData;
然而,如果我要定义一个新变量并复制粘贴“columnData”的内容,JavaScript会将其视为一个数组(这是正确的,也是我所期望的行为)
那么,如何以这样一种方式来表达我的JSON,从中提取一个数组,以满足列定义
您可能会对自己说,“只需将列定义设置为JSON并对其进行解析”。但是,我需要在列定义中传递一些函数,所以我不能在JSON中传递(如果我的理解是正确的)
编辑:
我希望columnData成为定义数组的原因是我希望能够返回如下内容:
[{
name : "Configuration ID",
type : "string",
visible : true,
filterType : "search",
width : 70,
field : "configuration_id"
editor : editableText
}]
其中editableText是一个JavaScript变量:
var editableText = $("<div/>").dynamicTableEditor({
editHandler: function(aData, aContext) {
$("#save-data").html("Saving note: <strong>" + aData + "</strong>");
executeAsync();
}
});
产出将是:
[{
name : "Configuration ID",
type : "string",
visible : true,
filterType : "search",
width : 70,
field : "configuration_id"
editor : editableText = $("<div/>").dynamicTableEditor({
editHandler: function(aData, aContext) {
$("#save-data").html("Saving note: <strong>" + aData + "</strong>");
executeAsync();
}
})
}]
[{
名称:“配置ID”,
键入:“字符串”,
可见:对,
filterType:“搜索”,
宽度:70,
字段:“配置\u id”
编辑器:editableText=$(“”)。dynamicTableEditor({
editHandler:函数(aData,aContext){
$(“#保存数据”).html(“保存说明:”+aData+“”;
executeAsync();
}
})
}]
我认为不清楚是什么问题阻止您只设置columnData:JSON.parse(string)
,因为字符串不是JSON,所以可能会出现一些解析错误。它不是JSON,因为我希望能够在其中传递函数。你不能在JSON中传递函数,你需要JSON用于ajax。请提供一个不是100%确定您想要做什么的选项,但是像var myColumns=result.columnData.split(“”)这样的选项如何代码>?按空格分隔符分割数组。除非问题是不是数组中的所有元素都是字符串…@IsaacAbramowitz。有些元素是布尔值,有些是字符串。另请参见我的编辑。我试图传递一个变量名。这可能吗?