Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从返回的JSON值创建JavaScript数组_Javascript_Arrays_Json_Servlets - Fatal编程技术网

如何从返回的JSON值创建JavaScript数组

如何从返回的JSON值创建JavaScript数组,javascript,arrays,json,servlets,Javascript,Arrays,Json,Servlets,我需要一个JavaScript变量,格式如下: var myColumns = [{ name : "Name", type : "string", visible : true, filterType : "search", width : 200 },

我需要一个JavaScript变量,格式如下:

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。有些元素是布尔值,有些是字符串。另请参见我的编辑。我试图传递一个变量名。这可能吗?