【问题标题】:JSON - renaming and duplicating a key - is it possible?JSON - 重命名和复制密钥 - 可能吗?
【发布时间】:2015-10-06 14:27:33
【问题描述】:

我正在尝试将 csv 文件解析为 JSON,我已经完成了,它工作正常。

我现在需要将整个 JSON 中的“product_code”键重命名为“value”,并复制它(将第二次迭代重命名为“label”)。两者的值将保持不变。我无法编辑 csv 文件,这需要在 JavaScript / jQuery 中完成。

希望这会更清楚地解释它:

现有:

{
    "brand":"BrandName1",
    "product_code":"001",
    "product_name":"White Picture Frame",
    "product_barcode":"1009842098"
},
{
    "brand":"BrandName2",
    "product_code":"002",
    "product_name":"Yellow Picture Frame",
    "product_barcode":"0982149872"
}

我希望将其更改为:

{
    "brand":"BrandName1",
    "value":"001",
    "label":"001",
    "product_name":"White Picture Frame",
    "product_barcode":"1009842098"
},
{
    "brand":"BrandName2",
    "value":"002",
    "label":"002",
    "product_name":"Yellow Picture Frame",
    "product_barcode":"0982149872"
}

这样它就可以与 jQuery Autocomplete 一起使用。

非常感谢任何帮助!说到 JSON,我是个新手。

【问题讨论】:

  • 如果你已经解析过了,这与JSON无关。它只是一个 JavaScript 对象。做任何你会在 JavaScript 中做的事情来操作对象属性。
  • 我想说最简单的解决方案是首先生成适当的 JSON。您没有提供任何上下文来帮助解决这个问题。

标签: jquery json parsing autocomplete


【解决方案1】:

最好的方法是JSON.parse()您的数据,然后遍历它构建的对象中的项目并添加您想要的键。比如:

var data = JSON.parse(myJsonString);
for (var i = 0; i < data; i++) {
    data[i].value = data[i].product_code;
    data[i].label = data[i].product_code;
    data[i].product_code = undefined;
}

编辑:您可以使用delete data[i].product_code; 将其完全删除,而不是将product_code 更改为undefined。请参阅此处了解更多信息:https://stackoverflow.com/a/3455416/5169684

【讨论】:

    【解决方案2】:

    应该是:

    new.value = existing.product_code;
    new.label = existing.product_code;
    

    就现有的要删除的属性而言。使用delete

    delete existing.product_code;
    

    【讨论】:

      【解决方案3】:

      我最终使用了以下代码,它运行良好 - 感谢您让我走上正轨...

      var i;
      
      for(i = 0; i < productList.length; i++){
          productList[i].value = productList[i]['product_code'];
          productList[i].label = productList[i]['product_code'];
          delete productList[i].product_code;
      }
      

      【讨论】:

        猜你喜欢
        • 2012-11-03
        • 2018-06-14
        • 2019-08-13
        • 1970-01-01
        • 2012-02-12
        • 1970-01-01
        • 2018-07-18
        • 2016-02-09
        相关资源
        最近更新 更多