[英]How can I change a payload array into a payload object in Node Red?
[英]How can i convert a JSON array payload into one object with specific fields and an array with dates?
我有一个从后端获取的 JSON 有效负载。 数据包含一个带有对象的payload
数组。 通过某种方式,我想将数组内的这些对象转换为一个对象,并将selectedDate
日期转换为自己的数组。 JSON 有效负载如下所示:
{
"success": true,
"payload": [
{
"weekNumber": 40,
"sortOrder": 1,
"label": "autumn",
"numberOfPossibleDays": 3,
"editable": true,
"selectedDate": "2020-09-29",
"deliveryDays": [
{
"date": "2020-09-28",
"contactPerson": null,
"phoneNumber": null,
"contactPerson2": null,
"phoneNumber2": null,
"selected": false
},
{
"date": "2020-09-29",
"contactPerson": "John",
"phoneNumber": "99887744",
"contactPerson2": "Tom",
"phoneNumber2": "40040000,
"selected": true
},
{
"date": "2020-09-30",
"contactPerson": null,
"phoneNumber": null,
"contactPerson2": null,
"phoneNumber2": null,
"selected": false
}
]
},
{
"weekNumber": 53,
"sortOrder": 2,
"label": "christmas",
"numberOfPossibleDays": 2,
"editable": true,
"selectedDate": "2020-12-29",
"deliveryDays": [
{
"date": "2020-12-28",
"contactPerson": null,
"phoneNumber": null,
"contactPerson2": null,
"phoneNumber2": null,
"selected": false
},
{
"date": "2020-12-29",
"contactPerson": "Doe,
"phoneNumber": "99999999",
"contactPerson2": "Foo",
"phoneNumber2": "44552200",
"selected": true
}
]
}
]
}
我想要做的是获得这样的输出对象:
{
autumn=firstContactPersonName: "John",
autumn=firstContactPersonPhone: "46442644",
autumn=secondContactPersonName: "Tom",
autumn=secondContactPersonPhone: "40040000"
christmas=firstContactPersonName: "Doe",
christmas=firstContactPersonPhone: "99999999",
christmas=secondContactPersonName: "Foo",
christmas=secondContactPersonPhone: "44552200"
}
日期输出应该是这样的数组:
const dateArray = ["autumn=2020-09-29", "christmas=2020-12-29"]
我希望它是动态的,因为有时我可能会有easter
等对象。 我为什么要这样做是因为我使用对象来填充输入字段中的内容和dateArray
以启用选择的日期。 我知道这不是最好的解决方案,但我必须尝试以这种方式解决。 我是 JavaScript 的新手,我在理解它时遇到了一些问题。 如果有人可以帮助我,我将不胜感激,好吗? 我希望这个问题和例子很好。 感谢您的帮助。
let obj = { "success": true, "payload": [ { "weekNumber": 40, "sortOrder": 1, "label": "autumn", "numberOfPossibleDays": 3, "editable": true, "selectedDate": "2020-09-29", "deliveryDays": [ { "date": "2020-09-28", "contactPerson": null, "phoneNumber": null, "contactPerson2": null, "phoneNumber2": null, "selected": false }, { "date": "2020-09-29", "contactPerson": "John", "phoneNumber": "99887744", "contactPerson2": "Tom", "phoneNumber2": "40040000", "selected": true }, { "date": "2020-09-30", "contactPerson": null, "phoneNumber": null, "contactPerson2": null, "phoneNumber2": null, "selected": false } ] }, { "weekNumber": 53, "sortOrder": 2, "label": "christmas", "numberOfPossibleDays": 2, "editable": true, "selectedDate": "2020-12-29", "deliveryDays": [ { "date": "2020-12-28", "contactPerson": null, "phoneNumber": null, "contactPerson2": null, "phoneNumber2": null, "selected": false }, { "date": "2020-12-29", "contactPerson": "Doe", "phoneNumber": "99999999", "contactPerson2": "Foo", "phoneNumber2": "44552200", "selected": true } ] } ] } let results={}; let datesArray=[]; obj.payload.map((x)=>{ datesArray.push(x.label+"="+x.selectedDate); x["deliveryDays"].map((y)=>{ if(y.contactPerson){ let personKey = x.label + "=firstContactPersonName"; results[personKey] = y.contactPerson; let contactKey = x.label+"=firstContactPersonPhone"; results[contactKey] = y.phoneNumber; } if(y.contactPerson2){ let secondPersonKey = x.label + "=secondContactPersonName"; results[secondPersonKey] = y.contactPerson2; let secondContactKey = x.label+"=secondContactPersonPhone"; results[secondContactKey] = y.phoneNumber2; } }); }); console.log(datesArray) console.log(results)
我们通过有效载荷迭代并利用日期数组来存储日期和结果数组,以获取一个季节中的第一和第二联系人姓名。 希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.