50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
import json
|
|
|
|
def update_keys_with_slugs(data):
|
|
if not isinstance(data, dict):
|
|
return data
|
|
|
|
new_dict = {}
|
|
for key, value in data.items():
|
|
if isinstance(value, dict):
|
|
# Store original key as name if it's not already present
|
|
if 'name' not in value:
|
|
value['name'] = key
|
|
|
|
# Get the slug and remove it from the value dict
|
|
slug = value.pop('slug', key)
|
|
|
|
# Recursively process nested dictionaries
|
|
processed_value = update_keys_with_slugs(value)
|
|
|
|
# Use the slug as the new key
|
|
new_dict[slug] = processed_value
|
|
else:
|
|
new_dict[key] = value
|
|
|
|
return new_dict
|
|
|
|
def main():
|
|
try:
|
|
# Read the JSON file with UTF-8 encoding
|
|
with open('./circuits.json', 'r', encoding='utf-8') as file:
|
|
data = json.load(file)
|
|
|
|
# Process the data
|
|
updated_data = update_keys_with_slugs(data)
|
|
|
|
# Write the updated data back to the file with UTF-8 encoding and ensure_ascii=False
|
|
with open('./circuits-new.json', 'w', encoding='utf-8') as file:
|
|
json.dump(updated_data, file, indent=2, ensure_ascii=False)
|
|
|
|
print("Successfully updated circuit keys with slugs")
|
|
|
|
except FileNotFoundError:
|
|
print("Error: circuits.json file not found")
|
|
except json.JSONDecodeError:
|
|
print("Error: Invalid JSON format in circuits.json")
|
|
except Exception as e:
|
|
print(f"An error occurred: {str(e)}")
|
|
|
|
if __name__ == "__main__":
|
|
main() |