从 json 数据 (python) 中删除空值

Remove null from a json data (python)

当我使用 Rest API 从 Firebase 下载数据时,它看起来像这样。

{
  "Dataset1": [
    null,
    {
      "Key1": 1,
      "Key2": 2
    },
    {
      "Key1": 3,
      "Key2": 4
    }
  ],
  "Dataset2": [
    null,
    {
      "Key1": 1,
      "Key2": 2
    },
    {
      "Key1": 3,
      "Key2": 4
    }
  ]
}

是否可以在将数据保存到文件之前删除 null 值?由于我设计数据库的方式,我知道 null 存在,但现在重新设计数据为时已晚。我尝试了 is_not 但还没有成功。

试试这个代码:

Dataset2 = list()
for data in Dataset:
    if data not null:
        Dataset2.append(data)
Dataset = Dataset2
del Dataset2

您似乎在数据库中存储了具有顺序递增键的节点(即“1”、“2”、“3”)。当您这样做时,Firebase 将其解释为数组结构,并在您检索它时将其强制转换为 (zero-based) 数组。由于您没有索引 0 的节点,因此它会在那里添加一个 null

为防止这种数组强制转换,请使用 non-numeric 键存储节点,例如通过在每个数字前加上一个短 non-numeric 值作为前缀。比如“key1”、“key2”、“key3”。

另见:

它似乎只是每个列表中的第一个元素。如果是这样,您可以对此使用简单的字典理解:

{k: v[1:] for k, v in data.items()}

如果不是你可以使用这个理解:

{k: [e for e in v if e != None] for k, v in data.items()}