1

我有一个从 jquery 数据表编辑器Datatables Editor收到的数据格式,如下所示,我需要对其进行解析,以便将其存储到 db 中,但我还没有找到这样做的方法。

 { action: 'edit',
     'data[1][Name]': 'Some Text ',
     'data[1][Rating]': '1',
     'data[1][Division]': 'Some Text '
 } 

使用 javascript 解析这种形式的数据的最佳方法是什么?编辑器库附带一个用于解析数据的 php 库,但我使用 nodejs 作为后端/

4

2 回答 2

1

如果要转换data[]为文字,可以执行以下操作:

var prop, fieldName, literal = {};
for (prop in data) {
    if (prop != 'action') {
        fieldName = prop.match(/\[(.*?)\]/g)[1].replace(/\]|\[/g,'');
        literal[fieldName] = data[prop];
    } 
}

→<a href="http://jsfiddle.net/j05750p0/" rel="nofollow">演示。它会产生一个像

{Name: "Some Text ", Rating: "1", Division: "Some Text "}

例如,可以用来插入到 mongodb 中。

它只是遍历数据,提取每个 #2[]并将该括号的内容作为属性名称传递给文字。我一点也不声称这是最好的方法。

于 2015-10-08T09:17:37.707 回答
0

我有新的也许更系统的方法,它排除了正则表达式字符串中 '[]' 字符的风险。很简单的方法是使用自定义ajax,我用的是自己的数据:

const editor = new $.fn.dataTable.Editor({
    ajax: (method, url, data, success, error) => {           
        $.ajax({
            type: 'POST',
            url: '/updateproductcode',
            data: JSON.stringify(data),
            success: (json) => {
                success(json);
            },
            error: (xhr, error, thrown) => {
                error(xhr, error, thrown);
            }
        });
    },
    table: '#mytable',
    idSrc: 'productcode',
    fields: ...

然后在服务器端收到对象,其键是您的字符串化数据:

{'{"action":"edit","data":{"08588001339265":{"productcode":"08588001339265","name":"does_not_existasdfadsf","pdkname":"Prokain Penicilin G 1.5 Biotika ims.inj.s.10x1.5MU","suklcode":"0201964","pdkcode":"2895002"}
}:''}

如果你用 解析它的键JSON.parse(Object.keys(req.body)[0]),你会得到你的结果:

{ action: 'edit',
  data:
   { '08588001339265':
      { productcode: '08588001339265',
        name: 'does_not_existasdfadsf',
        pdkname: 'Prokain Penicilin G 1.5 Biotika ims.inj.s.10x1.5MU',
        suklcode: '0201964',
        pdkcode: '2895002' } } }
于 2019-01-23T08:29:03.607 回答