从JSON对象中删除所有键

时间:2019-01-30 18:39:08

标签: javascript json parsing

最初,我使用的是CSV,每行包含数据,例如

------------------------------------------------------
123            |   cat               |   dog         |   
------------------------------------------------------
456            |   cat               |   rabbit      |   
------------------------------------------------------
789            |   snake             |   dog         |   
------------------------------------------------------

我现在正在获取更多具有不同结构的数据,因此我无法再使用csv。相反,我正在使用JSON文件。 JSON文件看起来像这样

[
  [
    {
      "ID": 123,
      "animal_one": "cat",
      "animal_two": "dog"
    },
    {
      "ID": 456,
      "animal_one": "cat",
      "animal_two": "rabbit"
    },
    {
      "ID": 789,
      "animal_one": "snake",
      "animal_two": "dog"
    }
  ],
  [
    2222
  ],
  [
    12345
  ],
  [
    "2012-01-02"
  ],
  [
    "2012-12-20"
  ]
]

因此您可以看到其他数据。对于应用程序的这一部分,我只想处理JSON的第一部分,即包含动物的部分。我拥有的函数基本上只对值起作用,因此我需要使JSON像原始CSV文件一样,使我仅具有值,而没有键。

因此,我正在加载JSON文件,该文件随后包含在变量data

然后我要尝试这样的事情

var key = "CUST_ID";
delete data[0][key];
console.log(JSON.stringify(data[0]))

尽管这甚至行不通,但我认为这仍然是错误的方法。我不想定义要删除的键,只希望它删除所有键并保留值。

我将如何去做?我正在使用data[0]获取JSON的第一部分,该部分包含动物。不确定这是否正确?

谢谢

3 个答案:

答案 0 :(得分:3)

  

我不想定义要删除的键

您仍然将需要定义哪个键作为值。一个可能只是把所有的值从对象,以任意顺序,但是这不是对变化数据格式强劲。使用类似

const table = data[0].map(value => [value.ID, value.animal_one, value.animal_two]);

答案 1 :(得分:2)

如果您不在乎所获得的密钥,则可以简单地执行此操作:

var collection = "";
data[0].forEach(function(row) {
    var line = [];
    Object.keys(row).forEach(function(key) {
        line.push(row[key])
    });
    collection = collection + line.join(',') + '\n';
})

您将从集合中删除csv字符串

答案 2 :(得分:1)

data[0].forEach(function(row,index) {
   data[0][index] = Object.values(data[0][index]);
});