2015-10-06 49 views
1

我试图解析一个csv文件作为JSON,我已经完成,它工作正常。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自动完成使用。

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

+1

如果您已经解析它,这有没有关系JSON。它只是一个JavaScript对象。在JavaScript中执行任何操作来处理对象属性。 – meagar

+0

我想说最简单的解决方案是首先生成适当的JSON。你不给任何背景来帮助。 –

回答

3

做到这一点,最好的办法是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; 
} 

编辑:除了更改product_codeundefined的,你可以用delete data[i].product_code;中将其完全移除。请参阅此处了解更多信息:https://stackoverflow.com/a/3455416/5169684

1

应该是:

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

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

delete existing.product_code; 
+1

请试试这个小提琴:https://jsfiddle.net/uy4yumst/ –

0

我结束了使用下面的代码,它工作得很好 - 感谢把我在正确的轨道上......

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