最好的方法来转换数据
问题描述:
我有我的NodeJS应用程序供应商API调用返回不同的对象,与下面是在JSON的一个对象的例子:最好的方法来转换数据
[{
"id": 365467865567,
"type": "PERSON",
"created_time": 1492809120,
"updated_time": 1492809542,
"last_contacted": 1492809128,
"properties": [
{
"type": "SYSTEM",
"name": "phone",
"value": "123456789"
},
{
"type": "SYSTEM",
"name": "first_name",
"value": "Test2"
},
{
"type": "SYSTEM",
"name": "last_name",
"value": "You"
},
{
"type": "CUSTOM",
"name": "utm_medium",
"value": "email"
}
]
}]
它不是很容易使用这种格式的数据,并需要将其转换为键值格式。类似的东西:
[{
"id": 365467865567,
"type": "PERSON",
"created_time": 1492809120,
"updated_time": 1492809542,
"last_contacted": 1492809128,
"properties":
{
"phone": "123456789",
"first_name": "Test2",
"last_name": "You",
"utm_medium": "email"
}
}]
什么是最有效的方式来改变这种情况?
答
尝试在属性上循环并重新分配变量。
var array = [{
"id": 365467865567,
"type": "PERSON",
"created_time": 1492809120,
"updated_time": 1492809542,
"last_contacted": 1492809128,
"properties": [{
"type": "SYSTEM",
"name": "phone",
"value": "123456789"
}, {
"type": "SYSTEM",
"name": "first_name",
"value": "Test2"
}, {
"type": "SYSTEM",
"name": "last_name",
"value": "You"
}, {
"type": "CUSTOM",
"name": "utm_medium",
"value": "email"
}]
}];
array.forEach(function(obj) {
var properties = {};
obj.properties.forEach(function(prop) {
properties[prop.name] = prop.value;
});
obj.properties = properties;
});
+1
一个'for'和嵌套的'forEach' ? - 这有点..非正统 - 为什么不是2'for'或者只是2'forEach'而不是? –
+1
我会解决这个问题。主要是因为我没有意识到json对象最初是一个数组(我的错误)。 – AndyB
答
这里有一个方法,如果IDK的最有效的,但它的短ñ甜蜜。
thing[0].properties = thing[0].properties.reduce((p, n) => (
n[p.name] = p.value;
return n;
), {});
我有,你是不是在找最有效的* *的方式来做到这一点的感觉,而是对于任何* *的方式,你可以做到这一点;) –