39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import json
|
|
import csv
|
|
|
|
INPUT_FILE = "orders.json"
|
|
OUTPUT_FILE = "orders_separated.csv"
|
|
|
|
def main():
|
|
# Load JSON array
|
|
with open(INPUT_FILE, "r", encoding="utf-8") as f:
|
|
data = json.load(f)
|
|
|
|
# Ensure it's a list
|
|
if not isinstance(data, list):
|
|
raise ValueError("JSON file must contain a top-level array of objects.")
|
|
|
|
# Convert nested fields to JSON strings
|
|
for item in data:
|
|
if "Customers" in item:
|
|
item["Customers"] = json.dumps(item["Customers"], ensure_ascii=False)
|
|
if "ProductsSold" in item:
|
|
item["ProductsSold"] = json.dumps(item["ProductsSold"], ensure_ascii=False)
|
|
|
|
# Collect all possible keys to ensure full CSV header
|
|
all_keys = set()
|
|
for item in data:
|
|
all_keys.update(item.keys())
|
|
fieldnames = list(all_keys)
|
|
|
|
# Write CSV
|
|
with open(OUTPUT_FILE, "w", newline="", encoding="utf-8") as f:
|
|
writer = csv.DictWriter(f, fieldnames=fieldnames)
|
|
writer.writeheader()
|
|
writer.writerows(data)
|
|
|
|
print(f"Saved {len(data)} rows to {OUTPUT_FILE}")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|