关于jquery:JSON – 重命名和复制密钥 – 是否可能?

JSON - renaming and duplicating a key - is it possible?

我正在尝试将一个csv文件解析为json,我已经完成了,它工作得很好。

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

希望这能更清楚地解释:

现有的:

1
2
3
4
5
6
7
8
9
10
11
12
{
   "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"
}

我希望将此更改为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
   "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自动完成一起使用。

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


实现这一点的最佳方法是使用JSON.parse()您的数据,然后迭代它所构建的对象中的项,并添加您想要的键。类似:

1
2
3
4
5
6
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;
}

编辑:不需要将product_code改为undefined就可以用delete data[i].product_code;完全删除。更多信息请参见:https://stackoverflow.com/a/3455416/5169684。


应该是:

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

对于现有的,要删除的属性。使用delete

1
delete existing.product_code;


我最终使用了以下代码,这很好-谢谢你把我放在正确的轨道上…

1
2
3
4
5
6
7
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;
}