Untitled

mail@pastecode.io avatarunknown
python
a month ago
1.7 kB
0
Indexable
Never
import json
import csv

# Input JSON file name
json_file = 'input.json'

# Output flat file name (e.g., CSV)
output_file = 'output.csv'

def flatten_json(json_object, parent_key='', separator='_'):
    """
    Recursively flatten a JSON object.
    """
    items = {}
    for key, value in json_object.items():
        new_key = parent_key + separator + key if parent_key else key
        if isinstance(value, dict):
            items.update(flatten_json(value, new_key, separator=separator))
        else:
            items[new_key] = value
    return items

try:
    # Read JSON data from the input file
    with open(json_file, 'r') as json_data:
        data = json.load(json_data)

    # Ensure the JSON data is a list of dictionaries
    if not isinstance(data, list) or not all(isinstance(entry, dict) for entry in data):
        raise ValueError("JSON data should be a list of dictionaries")

    # Flatten the JSON data
    flat_data = [flatten_json(entry) for entry in data]

    # Extract field names from the flattened data
    field_names = set()
    for entry in flat_data:
        field_names.update(entry.keys())

    # Write the data to the flat file (CSV)
    with open(output_file, 'w', newline='') as csv_file:
        writer = csv.DictWriter(csv_file, fieldnames=sorted(field_names))
        
        # Write the header row
        writer.writeheader()

        # Write each flattened dictionary as a row in the CSV file
        for entry in flat_data:
            writer.writerow(entry)

    print(f"Data from '{json_file}' has been successfully written to '{output_file}'.")

except FileNotFoundError:
    print(f"Error: File '{json_file}' not found.")
except Exception as e:
    print(f"An error occurred: {str(e)}")