在python中将多个列表写入JSON文件

时间:2013-11-25 07:30:51

标签: python json

假设我有以下列表

list1 = [{"created_at": "2012-01-31T10:00:04Z"},{"created_at": "2013-01-31T10:00:04Z"}] 
list2 = [{"created_at": "2014-01-31T10:00:04Z"}] 

我可以使用json.dump(list1,file,indent=2)将第一个列表写入JSON文件,结果为

[
  {
    "created_at": "2012-01-31T10:00:04Z"
  },
  {
    "created_at": "2013-01-31T10:00:04Z"
  }
]

我的问题是,如何附加第二个列表的内容?如果我简单地执行json.dump(list2,file,indent=2),则会导致无效的JSON文件,如下所示。

[
  {
    "created_at": "2012-01-31T10:00:04Z"
  },
  {
    "created_at": "2013-01-31T10:00:04Z"
  }
][
  {
    "created_at": "2014-01-31T10:00:04Z"
  }
]

编辑:通过解析大约8000个文件动态创建列表。以上列表只是示例。我可能会在JSON文件中写入8000个列表,因此简单的追加将无效。

3 个答案:

答案 0 :(得分:2)

In [1]: import json

In [2]: list1 = [{"created_at": "2012-01-31T10:00:04Z"},{"created_at": "2013-01-31T10:00:04Z"}] 

In [3]: list2 = [{"created_at": "2014-01-31T10:00:04Z"}] 

In [4]: list1.extend(list2)

In [5]: json.dumps(list1)
Out[5]: '[{"created_at": "2012-01-31T10:00:04Z"}, {"created_at": "2013-01-31T10:00:04Z"}, {"created_at": "2014-01-31T10:00:04Z"}]'

In [8]: json.dumps(list1 + list2)
Out[8]: '[{"created_at": "2012-01-31T10:00:04Z"}, {"created_at": "2013-01-31T10:00:04Z"}, {"created_at": "2014-01-31T10:00:04Z"}]'

答案 1 :(得分:1)

解析文件追加(或扩展)到唯一列表并最终转换为JSON。假设您的解析函数是parse

>>> import json
>>> result = []
>>> for file in files:
...     result.append(parse(file))
...
>>> json.dump(result, file1, indent=2)

答案 2 :(得分:0)

我发现下面给出的解释中有些欠缺,这就是为什么要在这里提出要点的原因。 Json文件可以具有单个父元素。因此,如果在第一次迭代时转储第一个列表,然后在第二次迭代时转储,则文件中将出现格式错误。 B / c Json要求在转储之前将这两个列表包装在一个列表/数组中。

因此,您将所有列表存储在一个列表中(使用附加或任何其他上述方法)。然后,您将此聚合列表转储到Json文件中。但是,如果您不想这样做,则必须为不同的列表创建不同的文件。