繁体   English   中英

将对象转换为JSON对象

[英]Convert Object to JSON Object

我正在使用DataTables库,因此很难以适当的格式接收数据,因此我试图在DataTable库尝试将数据提取到表中之前进行调整。 我有一个ajax调用,它返回以下格式的对象:

data:[ [{ Key: "SomeKey" , Value: "SomeValue" } , { ...} ],[...] ] 

我期望的输出是: data:[ [{ "SomeKey":"SomeValue" } , { ...} ],[...] ]

我尝试了JSON.stringify或eval方法,但是没有用,当返回类型是某种字符串时,也尝试了这两种方法,但是它在"之前插入\\ ,所以它不会转换为json。任何帮助或跟踪都将是赞赏。

您应该查看Array.prototype.mapmdn

 let data = [[{Key: "SomeKey", Value: "SomeValue"}]]; let output = data.map(a => a.map(({Key, Value}) => ({[Key]: Value}))); console.log(output); 

注意[Key]语法。 简单地说,而var x = 'key'; y = {x: 3} var x = 'key'; y = {x: 3}将分配对象{x: 3}x = 'key'; y = {[x]: 3} x = 'key'; y = {[x]: 3}将分配对象{key: 3}

如果您实际上收到的字符串是"data:[ [{ Key: "SomeKey" , Value: "SomeValue" } , { ...} ],[...] ]" ,则可以修剪前5个字符('data:'),然后使用JSON.parse

这与JSON无关。 :-)

data显然是对象数组的数组,其中每个对象都有valled KeyValue属性。

如果要创建一个新的对象数组数组,其中的对象具有一个由Key值命名的属性,其值是Value值,则可以执行以下操作:

data = data.map(a => a.map(({Key,Value}) => ({[Key]: Value})));

该方法在数组(外部数组和内部数组)上使用map并进行结构分解以从子数组中的每个对象中选择KeyValue属性,并使用计算出的属性名称来设置新对象的属性名称。

在ES5和更早的版本中,它看起来像这样:

data = data.map(function(a) {
    return a.map(function(obj) {
        var newObj = {};
        newObj[obj.Key] = obj.Value;
        return newObj;
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM