javascript - 更改 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 修改数据并通过谷歌标签管理器将其发送给第三方。
任何帮助将不胜感激。欢迎任何问题。
解决方案
请参阅下面的代码。我不确定您的 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));
推荐阅读
- android - 如何在android studio中做智能动画
- c# - 使用foreach循环时重复的Json项目
- ios - Swift/xcode:在标签栏点击时重新加载视图(但不是在按下时)
- python - 我可以在 python 中为语言检测 API 使用多种语言吗?
- redis - 如何使用cube.js连接特定的redis
- python - 如何将来自不同数据框的值添加在一起?
- php - 尝试访问符号链接时如何修复 403 错误?
- python - 变量未覆盖 - 烧瓶用户输入以更改变量
- javascript - 有5个“li”元素,如何交换第一个“li”元素和最后一个“li”元素?
- c# - React.js 仅在读取 PDF 表单文件时显示输入字段