首页 > 解决方案 > 更改 JSON 格式/布局

问题描述

我的网站上有一个通用变量,其中包括带有相关详细信息的行项目。这些订单项反映了用户购物车中的内容。我正在与要求传递给他们的数据格式略有不同的第三方集成。以下是我网站上当前的数据层:

"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 修改数据并通过谷歌标签管理器将其发送给第三方。

任何帮助将不胜感激。欢迎任何问题。

标签: javascriptjqueryarraysjsonobject

解决方案


请参阅下面的代码。我不确定您的 lineItems 对象是如何设置的,但在下面我刚刚创建了一个名为 line Items 的数组。如果 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.log(JSON.stringify(newLineItems));


推荐阅读