【问题标题】:Change JSON format/layout更改 JSON 格式/布局
【发布时间】:2019-02-26 02:39:17
【问题描述】:

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

"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 将其发送给第三方。

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

【问题讨论】:

  • 为什么输入的是quantity: 1,结果是quantity: 2
  • 你能解释一下每个属性及其转换吗?
  • 应该从哪里获得descriptionproductUrl
  • 忽略数据本身,我需要修改 JSON 格式以匹配第三方的需求。
  • 为了响应堆栈溢出,这只是我发送给第三方的大量数据的一部分,我已经设法将其余部分整理好,这是我的订单项的格式挣扎。

标签: javascript jquery arrays json object


【解决方案1】:

这应该与您要查找的内容接近。

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];
    }
}

【讨论】:

    【解决方案2】:

    见下面的代码。 我不确定您的 lineItems 对象是如何设置的,但在下面我刚刚创建了一个名为 line Items 的数组。如果 line items 是我从上面的 sn-p 中怀疑的对象中的键,那么您将不得不在下面的示例中使用的 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));

    【讨论】:

    • 非常感谢以上内容,它帮助我更接近完成这件事......终于:)
    猜你喜欢
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2023-03-18
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多