从JSON中删除顶级元素

Removing top level elements from a JSON

本文关键字:元素 删除 JSON      更新时间:2023-09-26

我有以下输入json有效载荷,

{
    "Products": {
        "Product": [
            {
                "ProductID": 458761,
                "Designation": "CB 024-2001",
                "EntryDate": "2002-01-20T19:00:00.000-05:00",
                "S1": "024",
                "S2": 2001,
                "Year": 2001
            },
            {
                "ProductID": 458234,
                "Designation": "AGRS03/08",
                "EntryDate": "2008-03-05T19:00:00.000-05:00",
                "S1": "03",
                "S2": "08",
                "Year": 2008
            }
        ]
    }
}

现在我需要将其转换为以下JSON格式。

[
    {
        "Designation": "CB 024-2001",
        "EntryDate": "2002-01-20T19:00:00.000-05:00",
        "ProductID": 458761,
        "S1": "024",
        "S2": 2001,
        "Year": 2001
    },
    {
        "Designation": "AGRS03/08",
        "EntryDate": "2008-03-05T19:00:00.000-05:00",
        "ProductID": 458761,
        "S1": "03",
        "S2": "08",
        "Year": 2008
    }
]

有人能帮我写一个JavaScript来完成这项任务吗。非常感谢您的帮助。

编辑:您更改了问题:(

假设您的原始json存储在一个名为input的变量中。这可以使用以下代码完成:

var output = input.Products.Product;

原件:您可以使用map:

var output = input.Products.Product.map(function(inObj) {
    return {
        "Designation": inObj.Designation,
        "EntryDate": inObj.EntryDate,
        "S1": inObj.S1,
        "S2": inObj.S2,
        "Year": inObj.Year
    }
});

这将为您提供所需的输出——一个删除了ProductID的对象数组。当涉及到使用对象引用时,我有点生疏,但您可以使用delete:来缩短它

var output = input.Products.Product.map(function(inObj) {
    var outObj =  inObj;
    delete outObj.ProductID;
    return outObj;
});

不过,这也会更改原始的input值,所以我不建议您这样做,除非您不打算再次使用该数据。

var first = {
  "Products": {
      "Product": [
          {
              "ProductID": 458761,
              "Designation": "CB 024-2001",
              "EntryDate": "2002-01-20T19:00:00.000-05:00",
              "S1": "024",
              "S2": 2001,
              "Year": 2001
          },
          {
              "ProductID": 458234,
              "Designation": "AGRS03/08",
              "EntryDate": "2008-03-05T19:00:00.000-05:00",
              "S1": "03",
              "S2": "08",
              "Year": 2008
          }
      ]
  }
}

然后:

var second = first.Products.Product;

让它完全像你想要的:

for(var i = 0; i<second.length; i++){
 delete second[i].ProductID;
 }

您可以使用这个小函数:

var a = {
  "Products": {
    "Product": [{
      "ProductID": 458761,
      "Designation": "CB 024-2001",
      "EntryDate": "2002-01-20T19:00:00.000-05:00",
      "S1": "024",
      "S2": 2001,
      "Year": 2001
    }, {
      "ProductID": 458234,
      "Designation": "AGRS03/08",
      "EntryDate": "2008-03-05T19:00:00.000-05:00",
      "S1": "03",
      "S2": "08",
      "Year": 2008
    }]
  }
};
function newJSON(array){
  var b = array.Products.Product;
  b.forEach(function(e){delete e.ProductID});
  return JSON.stringify(b);
}
document.write(newJSON(a));

带下划线:

var result = _.map(data.Products.Products, (product) => {
    return _.omit(product, 'ProductID');
});