将对象转换为JSON对象

时间:2019-04-22 14:03:48

标签: javascript

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

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

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

我尝试了JSON.stringify或eval方法,但是没有用,当返回类型是某种字符串时,我也尝试了这两种方法,但是它在\之前插入了",所以它没有转换为json。任何帮助或良好的轨道,将不胜感激。

2 个答案:

答案 0 :(得分:3)

您应该查看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}将分配对象{x: 3},而x = 'key'; y = {[x]: 3}将分配对象{key: 3}

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

答案 1 :(得分:3)

这与JSON无关。 :-)

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

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

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

在数组(外部数组和内部数组)上使用mapdestructuring从子数组中的每个对象中选取KeyValue属性,并使用computed property names设置新对象的属性名称。

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

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