我有“人”记录了巨大的JSON对象......像这样 - 牵强通过API调用使用要求:Pythonically连接两个类似,但高度嵌套的JSON对象
{
people: [
{
foo: { key: value, ...},
bar: { key: value, ...},
person: { name: Harry, ...},
baz: { key: value, ...}
},
{
foo: { key: value, ...},
bar: { key: value, ...},
person: { name: Sally, ...},
baz: { key: value, ...}
},
{
... # many more records
}
]
}
而且到第二呼叫同样的API产生的formmatted和标签完全一样的附加记录...
{
people: [
{
foo: { key: value, ...},
bar: { key: value, ...},
person: { name: Jack, ...},
baz: { key: value, ...}
},
{
foo: { key: value, ...},
bar: { key: value, ...},
person: { name: Jill, ...},
baz: { key: value, ...}
},
{
... #many more records
}
]
}
我需要这些记录连接成一个文件(或者说,分析和最终插入数据操作到数据库) 。我需要保持全部记录...我不想覆盖JSON对象中的任何单个记录。
这是很容易的,我的第二组的记录包含第一个文件追加...但我得到:
{
people: [
{
foo: { key: value, ...},
bar: { key: value, ...},
person: { name: Harry, ...},
baz: { key: value, ...}
},
{
foo: { key: value, ...},
bar: { key: value, ...},
person: { name: Sally, ...},
baz: { key: value, ...}
},
{
... #many more records
}
]
}
{
people: [
{
foo: { key: value, ...},
bar: { key: value, ...},
person: { name: Jack, ...},
baz: { key: value, ...}
},
{
foo: { key: value, ...},
bar: { key: value, ...},
person: { name: Jill, ...},
baz: { key: value, ...}
},
{
... #many more records
}
]
}
...但这些字符:
]
}
{
people: [
...(在第一个响应中最后一条记录的末尾加上缺失的逗号)使其无效JSON。
我该如何正确连接这两个JSON对象 - 即将它们写入文件中作为一个大的格式正确且有效的JSON对象?
什么是最优化的方式?我认为最好从API响应之前的中去除不需要的字段,以连接这两个对象并将它们写入文件。但是 - 如果我只是想删除不需要的字符,他们是写入文件...我怎么也这样做呢?
我试过.replace(),.strip(),使用正则表达式考虑,试图将数据粘贴到列表中,并使用列表理解,尝试了词典理解和几个生成器。不完全确定什么是最好的和最习惯的行为是...
但是你给格式化的代码是不是有效的JSON既不是有效的Python字典。 –
你有没有试过[json.dump](https://docs.python.org/2/library/json.html#json.dump)? –
你为什么不把'人员列表合并为一个? –