使用数组更改JSON的键名

时间:2016-12-30 01:26:29

标签: javascript json

说我有一些像这样的JSON数据:

blah = [
{"Species":"setosa","Sepal.Length":5.1,"Sepal.Width":3.5},{"Species":"setosa","Sepal.Length":4.9,"Sepal.Width":3}
]

在我的代码中,我不一定知道JSON的关键名称。因此,我可以抓住这样的键(我知道数组中所有元素的键都相同):

mynames = Object.keys(blah[0]); // gives this... ["Species", "Sepal.Length", "Sepal.Width"]

我可以将此处名为Species的第一个密钥的名称更改为newthing,如下所示:

JSON.parse(JSON.stringify(blah).split('"Species":').join('"newthing":'));

但是,如果我不知道它被称为“物种”,但知道它是“我的名字”的第一个元素,我想我可以做同样的事情这样:

JSON.parse(JSON.stringify(blah).split('mynames[0]:').join('"newthing":'));

JSON.parse(JSON.stringify(blah).split('"mynames[0]":').join('"newthing":'));

但都失败了。有没有办法简单地做到这一点?

2 个答案:

答案 0 :(得分:1)

看起来你想要的是

blah[0].newthing = blah[0][mynames[0]];
delete blah[0][mynames[0]];
  

但知道这是'mynames'的第一个元素,

请注意,无法保证密钥的顺序,因此可能无法在每个环境中运行,甚至无法进行多次运行。

答案 1 :(得分:0)

How do I remove a property from a JavaScript object?说明了delete关键字如何用于删除属性。您只需将新属性设置为旧属性,然后删除旧属性即可。