【发布时间】:2017-05-14 08:29:53
【问题描述】:
假设我有一些这样的 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":'));
但两者都失败了。有没有办法简单地做到这一点?
【问题讨论】:
-
试试
split('"' + mynames[0] + '":') -
@JaromandaX - 当然,谢谢。
-
将结构化数据转换为字符串来执行此操作很愚蠢,尤其是在您不知道 JSON 中值的范围的情况下。怎么说键的文本也可能存在于值中?它可能会根据数据起作用,但我认为它很笨拙且脆弱。
-
为什么不
.replace(mynames[0], "newthing")? -
仅供参考,这是一个对象数组,而不是 JSON。 JSON 是一种文本的、独立于语言的数据格式。你有 JavaScript。
标签: javascript json