Изменить формат / макет JSON - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть универсальная переменная на моем сайте, которая включает позиции с соответствующими деталями.Эти позиции отражают то, что пользователь имеет в своей корзине.Я интегрируюсь с третьей стороной, которая требует, чтобы передаваемые им данные были немного отформатированы.Ниже приведен слой данных, который в настоящее время находится на моем веб-сайте:

"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 Tag Manager.

Любая помощь будет принята с благодарностью.Любые вопросы приветствуются.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

См. Код ниже.Я не уверен, как настроен ваш объект lineItems, но ниже я только что создал массив с именем line Items.Если позиции являются ключом к объекту, который, как я подозреваю, из вашего фрагмента выше, вам придется перейти на уровень глубже в циклах for, использованных в моем примере ниже.

Просто добавьте дополнительную информацию в новый объект ввложенные в циклы ниже.

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.log(JSON.stringify(newLineItems));
0 голосов
/ 26 февраля 2019

Это должно быть близко к тому, что вы ищете.

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];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...