在Python中将JSON对象转换为CSV文件后,只在CSV中获得一行



我对python完全陌生,我需要一些帮助,运行完这段代码后,我在CSV文件中只得到一行,json文件很大,有嵌套的数组任何建议,

blob_service_client = BlobServiceClient.from_connection_string(constr)
container_client = blob_service_client.get_container_client(container_name)
blob_client = container_client.get_blob_client(filename)
streamdownloader = blob_client.download_blob()
JsonObject = json.loads(streamdownloader.readall())    
def get_leaves(item, key=None):
if isinstance(item, dict):
leaves = {}
for i in item.keys():
leaves.update(get_leaves(item[i], i))
return leaves
elif isinstance(item, list):
leaves = {}
for i in item:
leaves.update(get_leaves(i, key))
return leaves
else:
return {key : item}

fieldnames = set()

for entry in JsonObject:
fieldnames.update(get_leaves(entry).keys())

with open('C:/Users/Desktop/output.csv', 'w', newline='') as f_output:
csv_output = csv.DictWriter(f_output, fieldnames=sorted(fieldnames))
csv_output.writeheader()
csv_output.writerows(get_leaves(entry) for entry in JsonObject)

你在循环中打开文件,它在每次迭代中都在重写文件,试试这个

with open('C:/Users/Desktop/output.csv', 'w', newline='') as f_output:
csv_output = csv.DictWriter(f_output, fieldnames=sorted(fieldnames))
csv_output.writeheader()
for entry in JsonObject:
fieldnames.update(get_leaves(entry).keys())
csv_output.writerows(get_leaves(entry) for entry in JsonObject)

最新更新