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

时间:2018-07-30 16:43:55

标签: javascript arrays json servlets

我需要以下形式的JavaScript变量:

var myColumns = [{
                name       : "Name",
                type       : "string",
                visible    : true,
                filterType : "search",
                width      : 200
            },
            {...}
            ]

根据this Dynamic Table JavaScript电子表格API。

作为我进行的AJAX调用的一部分,我将返回以下形式的JSON:

{
"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();
    }
 });

所以,如果我这样做:

var columnDefinition = results.columnData
console.log(columnsDefinition);

输出为:

[{
                     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();
    }
 })
}]

0 个答案:

没有答案