У меня есть универсальная переменная на моем веб-сайте, которая включает позиции с соответствующими деталями. Эти позиции отражают то, что у пользователя есть в корзине. Я интегрируюсь с третьей стороной, которая требует, чтобы передаваемые им данные были в несколько ином формате. Ниже приведен слой данных, который в настоящее время находится на моем веб-сайте:
"lineItems": [
{
"product": {
"id": "s83y016b5",
"sku_code": "s83y016b5",
"url": "/en-gb/jeans/p/s83y016b5",
"image_url": "http://www.my-website.com/a/p/shirt.jpeg",
"name": "Jeans",
"manufacturer": "",
"category": "Everyday Wear",
"stock": 116,
"currency": "GBP",
"unit_sale_price": 16,
"unit_price": 16,
"size": "6-9 Months",
"color": "Indigo"
},
"quantity": 1
}
]
Ниже показано, какой формат нужен третьему лицу:
"lineItems": [
{
"sku": "s83y016b5",
"name": "Jeans",
"description": "A super great pair of jeans.",
"category": "Everyday Wear",
"other": {"fieldName": "This can be a string or any value you like"}
"unitPrice": 11.99,
"salePrice": 11.99,
"quantity": 2,
"totalPrice": 23.98
"imageUrl": "http://www.my-website.com/a/p/shirt.jpeg",
"productUrl": "http://www.my-website.com/index.php/shirt.html",
}]
Очевидно, что это должно быть динамическим в зависимости от продуктов в корзине. Что я собираюсь сделать, так это использовать javascript для изменения данных и отправки их третьей стороне через Диспетчер тегов Google.
Любая помощь будет принята с благодарностью. Любые вопросы приветствуются.
Можете ли вы объяснить каждое свойство и его преобразование?
Откуда он должен взять description и productUrl?
Игнорируйте сами данные, это скорее формат JSON, который мне нужно изменить, чтобы он соответствовал тому, что нужно третьей стороне.
Чтобы ответить на переполнение стека, это только часть большего объема данных, которые я отправляю третьей стороне, мне удалось отсортировать остальные в порядке, это формат строк, с которым я борюсь.
Вы перебираете входной массив, создаете новый объект с нужными вам свойствами и помещаете его в результирующий массив. С какой частью у вас проблемы?
@Barmar изменил код
Я не вижу никакого кода? Если вы имеете в виду, что избавились от лишнего массива, я уже заметил это и удалил свой комментарий.
newLineItems = oldLineItems.map(obj => ({ new object properties in here }))


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это должно быть близко к тому, что вы ищете.
let oldLineItems = "your object";
let newLineItems = {};
newLineItems.lineItems = [];
for (let i in oldLineItems.lineItems) {
newLineItems.lineItems[i] = {};
for (let key in oldLineItems.lineItems[i].product)
{
newLineItems.lineItems[i][key] = oldLineItems.lineItems[i].product[key];
}
}
См. код ниже. Я не уверен, как настроен ваш объект lineItems, но ниже я только что создал массив с именем line Items. Если элементы строки являются ключом в объекте, что я подозреваю из вашего фрагмента выше, вам придется углубиться в циклы for, используемые в моем примере ниже.
Просто добавьте дополнительную информацию к новому объекту во вложенных циклах for in ниже.
var lineItems =
[
{
"product": {
"id": "s83y016b5",
"sku_code": "s83y016b5",
"url": "/en-gb/jeans/p/s83y016b5",
"image_url": "http://www.my-website.com/a/p/shirt.jpeg",
"name": "Jeans",
"manufacturer": "",
"category": "Everyday Wear",
"stock": 116,
"currency": "GBP",
"unit_sale_price": 16,
"unit_price": 16,
"size": "6-9 Months",
"color": "Indigo",
"description": 'Some random description'
},
"quantity": 1
},
{
"product": {
"id": "s83y01699",
"sku_code": "s83y01699",
"url": "/en-gb/pants/p/s83y016b5",
"image_url": "http://www.my-website.com/a/p/pants.jpeg",
"name": "Pants",
"manufacturer": "",
"category": "Casual Wear",
"stock": 90,
"currency": "au",
"unit_sale_price": 14,
"unit_price": 14,
"size": "6-9 Months",
"color": "Indigo",
"description": 'Some random description'
},
"quantity": 14
},
];
var newLineItems = [];
for(var char in lineItems){
// Adding some values to newLineItems.
newLineItems.push({
sku: lineItems[char].product.sku_code,
name: lineItems[char].product.name,
description: lineItems[char].product.description,
category: lineItems[char].product.category,
quantity: lineItems[char].quantity
});
}
console.info(JSON.stringify(newLineItems));Большое спасибо за вышесказанное, это помогло мне приблизиться к завершению этого... наконец :)
Почему на входе
quantity: 1, а на выходеquantity: 2?