[英]Convert Object to JSON Object
我正在使用DataTables库,因此很难以适当的格式接收数据,因此我试图在DataTable库尝试将数据提取到表中之前进行调整。 我有一个ajax调用,它返回以下格式的对象:
data:[ [{ Key: "SomeKey" , Value: "SomeValue" } , { ...} ],[...] ]
我期望的输出是: data:[ [{ "SomeKey":"SomeValue" } , { ...} ],[...] ]
我尝试了JSON.stringify或eval方法,但是没有用,当返回类型是某种字符串时,也尝试了这两种方法,但是它在"
之前插入\\
,所以它不会转换为json。任何帮助或跟踪都将是赞赏。
您应该查看Array.prototype.map
( mdn )
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 Key
和Value
属性。
如果要创建一个新的对象数组数组,其中的对象具有一个由Key
值命名的属性,其值是Value
值,则可以执行以下操作:
data = data.map(a => a.map(({Key,Value}) => ({[Key]: Value})));
该方法在数组(外部数组和内部数组)上使用map
并进行结构分解以从子数组中的每个对象中选择Key
和Value
属性,并使用计算出的属性名称来设置新对象的属性名称。
在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.