假设我有以下列表
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个列表,因此简单的追加将无效。
答案 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
文件中。但是,如果您不想这样做,则必须为不同的列表创建不同的文件。