Example:
pbpaste | camelizeJson
| #!/usr/bin/env python3 | |
| import sys, re, json | |
| def camelize(input_string): | |
| """ | |
| Convert a string to camelCase. | |
| """ | |
| if not input_string: | |
| return "" | |
| words = re.split(r'[^a-zA-Z0-9]', input_string) | |
| words = [word for word in words if word] | |
| return words[0].lower() + ''.join(word.capitalize() for word in words[1:]) | |
| def camelize_json_keys(data): | |
| """ | |
| Recursively camelize JSON keys in a dictionary or list. | |
| Args: | |
| data: The JSON object to camelize. Can be a dictionary, list, or other types. | |
| Returns: | |
| The JSON object with camelCased keys. | |
| """ | |
| if isinstance(data, dict): | |
| # Process dictionaries | |
| return {camelize(key): camelize_json_keys(value) for key, value in data.items()} | |
| elif isinstance(data, list): | |
| # Process lists | |
| return [camelize_json_keys(item) for item in data] | |
| else: | |
| # Base case: return data as is for non-dict, non-list | |
| return data | |
| if __name__ == "__main__": | |
| try: | |
| # Read JSON input from stdin | |
| input_data = sys.stdin.read() | |
| # Parse the JSON string | |
| json_data = json.loads(input_data) | |
| # Camelize the JSON keys | |
| camelized_json = camelize_json_keys(json_data) | |
| # Output the camelized JSON | |
| print(json.dumps(camelized_json, indent=2)) | |
| except json.JSONDecodeError as e: | |
| print(f"Error: Invalid JSON input. {e}", file=sys.stderr) | |
| sys.exit(1) |