将 JSON/YAML 的结构提取出来

#!/usr/bin/env python3
 
import json
import sys
 
import yaml
 
def extract_schema(obj):
    if isinstance(obj, dict):
        return {k: extract_schema(v) for k, v in obj.items()}
    if isinstance(obj, list):
        return [f'list[{len(obj)}]', extract_schema(obj[0]) if obj else None]
    return type(obj).__name__
 
def main():
    content = ''
    try:
        while True:
            line = input()
            content += line + '\n'
    except EOFError:
        pass
 
    try:
        obj = yaml.safe_load(content)
    except yaml.YAMLError:
        print('fatal: input is neither valid JSON nor YAML', file=sys.stderr)
        exit(1)
 
    schema = extract_schema(obj)
    print(json.dumps(schema, indent=2))
 
if __name__ == '__main__':
    main()