{"id":30910243,"url":"https://github.com/ms-32154/py-json-analyzer","last_synced_at":"2026-01-20T16:59:25.756Z","repository":{"id":301892122,"uuid":"1010220747","full_name":"MS-32154/py-json-analyzer","owner":"MS-32154","description":"JSON Explorer is a powerful CLI and Python library for analyzing, visualizing, exploring, and generating code from JSON data.","archived":false,"fork":false,"pushed_at":"2025-08-28T06:49:40.000Z","size":20251,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-28T13:23:08.579Z","etag":null,"topics":["cli","interactive-cli","json","json-schema","json-search","json-statistics","json-to-go","json-to-golang","jsontostruct","plot","pypi-package","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MS-32154.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-28T15:57:10.000Z","updated_at":"2025-08-28T06:49:44.000Z","dependencies_parsed_at":"2025-08-28T08:22:30.832Z","dependency_job_id":"2edca1f2-471f-4d3b-8f31-f5b030091d90","html_url":"https://github.com/MS-32154/py-json-analyzer","commit_stats":null,"previous_names":["ms-32154/py-json-analyzer"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/MS-32154/py-json-analyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MS-32154%2Fpy-json-analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MS-32154%2Fpy-json-analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MS-32154%2Fpy-json-analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MS-32154%2Fpy-json-analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MS-32154","download_url":"https://codeload.github.com/MS-32154/py-json-analyzer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MS-32154%2Fpy-json-analyzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274331062,"owners_count":25265615,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","interactive-cli","json","json-schema","json-search","json-statistics","json-to-go","json-to-golang","jsontostruct","plot","pypi-package","python"],"created_at":"2025-09-09T17:03:25.571Z","updated_at":"2026-01-20T16:59:25.750Z","avatar_url":"https://github.com/MS-32154.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![PyPI version](https://img.shields.io/pypi/v/py-json-analyzer.svg)](https://pypi.org/project/py-json-analyzer/)\n[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n# JSON Explorer\n\n**JSON Explorer** is a powerful CLI and Python library for analyzing, visualizing, exploring, and generating code from JSON data. Built with modern Python practices and featuring JMESPath-powered search capabilities.\n\n---\n\n## Features\n\n### Analysis \u0026 Exploration\n\n- **Structural Analysis**: Deep JSON structure analysis with type detection and conflict resolution\n- **JMESPath Search**: Industry-standard query language for powerful JSON searching and filtering\n- **Tree Visualization**: Multiple view modes (compact, analytical, raw) with rich terminal output\n- **Statistical Analysis**: Comprehensive data quality metrics and structural insights\n- **Multi-Format Visualization**: Terminal (curses/ASCII), interactive HTML (Plotly), or combined output\n- **Interactive Mode**: Full-featured terminal UI for exploration and analysis\n\n### Code Generation\n\n- **Multi-Language Support**: Generate strongly-typed code from JSON schemas\n  - **Go**: Structs with JSON tags, pointer handling, configurable types\n  - **Python**: Dataclasses, Pydantic v2 models, TypedDict with type hints\n  - **Coming Soon**: TypeScript interfaces, Rust structs with Serde\n- **Smart Type Detection**: Automatic conflict resolution and optional field handling\n- **Flexible Configuration**: Template-based system with extensive customization\n- **Interactive Configuration**: Guided setup with real-time preview and validation\n\n### Library Features\n\n- **Modular Architecture**: Use individual components independently\n- **Extensible Design**: Plugin-based generator system for custom languages\n- **Production Ready**: Comprehensive error handling and logging\n- **Well Documented**: Extensive API documentation and examples\n\n---\n\n## Requirements\n\n- **Python**: 3.11 or higher\n\n### Core Dependencies\n\n```\ndateparser\u003e=1.2.0        # Timestamp detection\njmespath\u003e=1.0.1          # JMESPath query language\njinja2\u003e=3.0.0            # Template engine for code generation\nplotly\u003e=5.0.0            # Interactive, browser-based graphing\nprompt-toolkit\u003e=3.0.0    # Interactive input with autocomplete\nrequests\u003e=2.32.0         # HTTP requests for URL loading\nrich\u003e=13.0.0             # Rich terminal formatting\nwindows-curses\u003e=2.4.0    # Terminal UI support on Windows (auto-installed)\n```\n\n### Optional Dependencies\n\n```\npytest\u003e=7.0.0\npytest-cov\u003e=4.0.0\nblack\u003e=23.0.0\nisort\u003e=5.12.0\nmypy\u003e=1.0.0\nflake8\u003e=6.0.0\ntypes-requests\u003e=2.31.0\ntypes-dateparser\u003e=1.1.0\n```\n\n---\n\n## Installation\n\n### From PyPI (Recommended)\n\n```bash\npip install py-json-analyzer\n```\n\nUpgrade to the latest version:\n\n```bash\npip install --upgrade py-json-analyzer\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/MS-32154/py-json-analyzer\ncd py-json-analyzer\npip install -e .\n```\n\nFor development with all optional dependencies:\n\n```bash\npip install -e \".[dev]\"\n```\n\n---\n\n## Quick Start\n\n### Command Line\n\n```bash\n# Interactive mode (recommended for first-time users)\njson_explorer data.json --interactive\n\n# Quick analysis\njson_explorer data.json --tree compact --stats\n\n# JMESPath search\njson_explorer data.json --search \"users[*].email\"\n\n# Generate Go code\njson_explorer data.json --generate go --output models.go\n\n# Generate Pydantic models\njson_explorer data.json --generate python --python-style pydantic --output models.py\n\n# Create visualizations\njson_explorer data.json --plot --plot-format html\n```\n\n### Python Library\n\n```python\nfrom json_explorer import analyze_json, JsonSearcher, quick_generate\n\n# Analyze structure\ndata = {\"users\": [{\"id\": 1, \"name\": \"Alice\", \"email\": \"alice@example.com\"}]}\nanalysis = analyze_json(data)\nprint(analysis)\n\n# JMESPath search\nsearcher = JsonSearcher()\nresult = searcher.search(data, \"users[*].email\")\nsearcher.print_result(result)\n\n# Generate code\ngo_code = quick_generate(data, language=\"go\", package_name=\"models\")\npython_code = quick_generate(data, language=\"python\", style=\"pydantic\")\n```\n\n---\n\n## CLI Usage\n\n### Basic Commands\n\n```bash\njson_explorer [FILE] [OPTIONS]\n\n# Data Sources\njson_explorer data.json              # Load from file\njson_explorer --url https://api.example.com/data  # Load from URL\n\n# Display Modes\n--interactive, -i                    # Interactive mode (full UI)\n--tree {compact,analysis,raw}        # Display tree structure\n--stats                              # Show statistics\n--detailed                           # Show detailed information\n--plot                               # Generate visualizations\n```\n\n### JMESPath Search\n\nThe search functionality now uses [JMESPath](https://jmespath.org/), an industry-standard query language for JSON:\n\n```bash\n# Basic path expressions\njson_explorer data.json --search \"users\"              # Get users array\njson_explorer data.json --search \"users[0]\"           # First user\njson_explorer data.json --search \"users[*].name\"      # All names\n\n# Filtering\njson_explorer data.json --search \"users[?age \u003e \\`30\\`]\"           # Filter by age\njson_explorer data.json --search \"users[?active == \\`true\\`]\"     # Filter by boolean\n\n# Functions\njson_explorer data.json --search \"length(users)\"                  # Count users\njson_explorer data.json --search \"sort_by(users, \u0026age)\"          # Sort by field\njson_explorer data.json --search \"max_by(users, \u0026age).name\"      # Get name of oldest\n\n# Projections (field selection)\njson_explorer data.json --search \"users[*].{name: name, email: email}\"\n\n# Complex queries\njson_explorer data.json --search \"users[?age \u003e \\`30\\` \u0026\u0026 active == \\`true\\`].name\"\n\n# Display options\n--tree-results                       # Show results as tree\n--show-examples                      # Display JMESPath examples\n```\n\n**JMESPath Resources:**\n\n- [Tutorial](https://jmespath.org/tutorial.html)\n- [Specification](https://jmespath.org/specification.html)\n- [Online Playground](https://jmespath.org/)\n\n### Code Generation\n\n```bash\n# List supported languages\njson_explorer --list-languages\n\n# Get language details\njson_explorer --language-info go\njson_explorer --language-info python\n\n# Generate Go code\njson_explorer data.json --generate go \\\n  --output models.go \\\n  --package-name models \\\n  --root-name User\n\n# Go-specific options\n--no-pointers                        # Don't use pointers for optional fields\n--no-json-tags                       # Don't generate JSON tags\n--json-tag-case {original,snake,camel}\n\n# Generate Python code\njson_explorer data.json --generate python \\\n  --output models.py \\\n  --python-style {dataclass,pydantic,typeddict}\n\n# Python-specific options\n--frozen                             # Make dataclasses immutable\n--no-slots                           # Don't use __slots__\n--kw-only                            # Make fields keyword-only\n--pydantic-forbid-extra              # Forbid extra fields in Pydantic\n\n# Common options\n--config config.json                 # Load configuration from file\n--struct-case {pascal,camel,snake}   # Class/struct name convention\n--field-case {pascal,camel,snake}    # Field name convention\n--no-comments                        # Don't generate comments\n--verbose                            # Show detailed generation info\n```\n\n### Visualization\n\n```bash\n# Terminal visualization (ASCII/curses)\njson_explorer data.json --plot --plot-format terminal\n\n# Interactive HTML (Plotly)\njson_explorer data.json --plot --plot-format html\n\n# All formats\njson_explorer data.json --plot --plot-format all\n\n# Options\n--detailed                           # Generate detailed charts\n--save-path output.html              # Save to specific file\n--no-browser                         # Don't auto-open browser\n```\n\n### Logging\n\n```bash\n--log-level {DEBUG,INFO,WARNING,ERROR}\n--log-file output.log\n--verbose-logging, -vl\n```\n\n---\n\n## Python API\n\n### Core Analysis\n\n```python\nfrom json_explorer import analyze_json, load_json\n\n# Load data\nsource, data = load_json(\"data.json\")\n# or\nsource, data = load_json(url=\"https://api.example.com/data\")\n\n# Analyze structure\nanalysis = analyze_json(data)\nprint(f\"Type: {analysis['type']}\")\nprint(f\"Children: {analysis.get('children', {})}\")\nprint(f\"Conflicts: {analysis.get('conflicts', {})}\")\n```\n\n### JMESPath Search\n\n```python\nfrom json_explorer import JsonSearcher\n\nsearcher = JsonSearcher()\n\n# Basic search\nresult = searcher.search(data, \"users[*].email\")\nif result:\n    searcher.print_result(result)\n\n# Multiple queries\nqueries = [\n    \"users[*].name\",\n    \"users[?age \u003e `30`]\",\n    \"length(users)\"\n]\nresults = searcher.search_multiple(data, queries)\n\n# Validate query before executing\nvalid, error = searcher.validate_query(\"users[*].invalid...\")\nif valid:\n    result = searcher.search(data, query)\n\n# Get example queries\nexamples = searcher.get_query_examples()\nsearcher.print_examples()\n```\n\n### Statistics \u0026 Analysis\n\n```python\nfrom json_explorer import DataStatsAnalyzer, generate_stats\n\n# Generate statistics\nanalyzer = DataStatsAnalyzer()\nstats = analyzer.generate_stats(data)\n\n# Print formatted summary\nanalyzer.print_summary(data, detailed=True)\n\n# Or use convenience function\nstats = generate_stats(data)\nprint(f\"Total values: {stats['total_values']}\")\nprint(f\"Max depth: {stats['max_depth']}\")\nprint(f\"Complexity: {stats['computed_insights']['complexity_score']}\")\n```\n\n### Visualization\n\n```python\nfrom json_explorer import JSONVisualizer, visualize_json\n\n# Create visualizer\nvisualizer = JSONVisualizer()\n\n# Terminal visualization\nvisualizer.visualize(data, output=\"terminal\", detailed=True)\n\n# HTML visualization\nvisualizer.visualize(\n    data,\n    output=\"html\",\n    save_path=\"report.html\",\n    detailed=True,\n    open_browser=True\n)\n\n# Or use convenience function\nvisualize_json(data, output=\"html\", detailed=True)\n```\n\n### Tree Display\n\n```python\nfrom json_explorer import print_json_analysis, print_compact_tree\n\n# Full analysis with tree\nprint_json_analysis(data, source=\"API Response\", show_raw=False)\n\n# Compact tree (no annotations)\nprint_compact_tree(data, source=\"Config File\")\n\n# Custom tree builder\nfrom json_explorer.tree_view import JsonTreeBuilder\n\nbuilder = JsonTreeBuilder(show_conflicts=True, show_optional=True)\n# ... use builder for custom visualization\n```\n\n### Code Generation\n\n```python\nfrom json_explorer.codegen import (\n    quick_generate,\n    generate_from_analysis,\n    create_config,\n    list_supported_languages,\n    get_language_info\n)\n\n# Quick generation\ngo_code = quick_generate(\n    data,\n    language=\"go\",\n    package_name=\"models\",\n    root_name=\"User\"\n)\n\npython_code = quick_generate(\n    data,\n    language=\"python\",\n    style=\"pydantic\",\n    package_name=\"models\"\n)\n\n# Detailed workflow\nanalysis = analyze_json(data)\nconfig = create_config(\n    language=\"go\",\n    package_name=\"api\",\n    add_comments=True,\n    language_config={\n        \"use_pointers_for_optional\": True,\n        \"int_type\": \"int64\"\n    }\n)\n\nresult = generate_from_analysis(analysis, \"go\", config, \"User\")\nif result.success:\n    print(result.code)\n    with open(\"models.go\", \"w\") as f:\n        f.write(result.code)\nelse:\n    print(f\"Error: {result.error_message}\")\n\n# Discover capabilities\nlanguages = list_supported_languages()\nprint(f\"Supported: {languages}\")\n\ninfo = get_language_info(\"python\")\nprint(f\"Python styles: {info.get('styles', [])}\")\n```\n\n### Interactive Mode\n\n```python\nfrom json_explorer import InteractiveHandler\n\nhandler = InteractiveHandler()\nhandler.set_data(data, source=\"my_data.json\")\nexit_code = handler.run()  # Launches interactive UI\n```\n\n---\n\n## Configuration\n\n### Configuration File Format\n\nJSON Explorer uses JSON configuration files for code generation:\n\n```json\n{\n  \"package_name\": \"models\",\n  \"add_comments\": true,\n  \"struct_case\": \"pascal\",\n  \"field_case\": \"snake\",\n  \"generate_json_tags\": true,\n  \"json_tag_omitempty\": true,\n  \"language_config\": {\n    \"use_pointers_for_optional\": true,\n    \"int_type\": \"int64\",\n    \"float_type\": \"float64\"\n  }\n}\n```\n\n### Language-Specific Examples\n\n#### Go Configuration\n\n```json\n{\n  \"package_name\": \"api\",\n  \"add_comments\": true,\n  \"generate_json_tags\": true,\n  \"json_tag_omitempty\": true,\n  \"json_tag_case\": \"snake\",\n  \"struct_case\": \"pascal\",\n  \"field_case\": \"pascal\",\n  \"language_config\": {\n    \"use_pointers_for_optional\": true,\n    \"int_type\": \"int64\",\n    \"float_type\": \"float64\"\n  }\n}\n```\n\n#### Python Dataclass Configuration\n\n```json\n{\n  \"package_name\": \"models\",\n  \"add_comments\": true,\n  \"struct_case\": \"pascal\",\n  \"field_case\": \"snake\",\n  \"language_config\": {\n    \"style\": \"dataclass\",\n    \"dataclass_slots\": true,\n    \"dataclass_frozen\": false,\n    \"dataclass_kw_only\": false,\n    \"use_optional\": true\n  }\n}\n```\n\n#### Python Pydantic Configuration\n\n```json\n{\n  \"package_name\": \"models\",\n  \"add_comments\": true,\n  \"struct_case\": \"pascal\",\n  \"field_case\": \"snake\",\n  \"language_config\": {\n    \"style\": \"pydantic\",\n    \"pydantic_use_field\": true,\n    \"pydantic_use_alias\": true,\n    \"pydantic_config_dict\": true,\n    \"pydantic_extra_forbid\": false,\n    \"use_optional\": true\n  }\n}\n```\n\nLoad configuration:\n\n```bash\njson_explorer data.json --generate go --config go_config.json\n```\n\n```python\nfrom json_explorer.codegen import load_config, generate_from_analysis\n\nconfig = load_config(\"go_config.json\")\nresult = generate_from_analysis(analysis, \"go\", config, \"User\")\n```\n\n---\n\n## Architecture\n\n### Project Structure\n\n```\njson_explorer/\n├── __init__.py              # Public API exports\n├── __main__.py              # Entry point for `python -m json_explorer`\n├── main.py                  # CLI application coordinator\n├── cli.py                   # CLI command handler\n├── interactive.py           # Interactive mode handler\n│\n├── analyzer.py              # JSON structure analysis\n├── search.py                # JMESPath-based search\n├── stats.py                 # Statistical analysis\n├── tree_view.py             # Tree visualization\n├── visualizer.py            # Multi-format charts (Plotly/curses)\n├── utils.py                 # File/URL loading utilities\n├── logging_config.py        # Centralized logging\n│\n└── codegen/\n    ├── __init__.py          # Code generation API\n    ├── registry.py          # Generator registry system\n    ├── cli_integration.py   # CLI integration\n    ├── interactive.py       # Interactive codegen UI\n    │\n    ├── core/                # Core codegen infrastructure\n    │   ├── naming.py        # Naming convention system\n    │   ├── config.py        # Configuration management\n    │   ├── templates.py     # Template engine\n    │   ├── schema.py        # Internal schema representation\n    │   └── generator.py     # Base generator interface\n    │\n    └── languages/           # Language-specific generators\n        ├── go/\n        │   ├── generator.py\n        │   ├── config.py\n        │   ├── naming.py\n        │   ├── interactive.py\n        │   └── templates/   # Jinja2 templates\n        │\n        └── python/\n            ├── generator.py\n            ├── config.py\n            ├── naming.py\n            ├── interactive.py\n            └── templates/   # Jinja2 templates\n```\n\n### Key Design Patterns\n\n- **Registry Pattern**: Extensible generator system\n- **Template Method**: Base generator defines workflow\n- **Strategy Pattern**: Multiple naming conventions and styles\n- **Factory Pattern**: Generator creation and configuration\n- **Builder Pattern**: Schema construction from analysis\n\n---\n\n## Testing\n\nRun the test suite:\n\n```bash\npytest\n```\n\nRun with coverage:\n\n```bash\npytest --cov=json_explorer --cov-report=html\n```\n\nTest categories:\n\n- **Core modules**: analyzer, search, stats, tree_view, visualizer\n- **Codegen core**: naming, schema, config, templates\n- **Generators**: Go and Python (all styles)\n- **Integration**: End-to-end workflows\n- **Edge cases**: None handling, conflicts, deep nesting\n\n---\n\n## Supported Languages\n\n| Language       | Status          | Features                                                 |\n| -------------- | --------------- | -------------------------------------------------------- |\n| **Go**         | ✅ Full Support | Structs, JSON tags, pointers, customizable type mappings |\n| **Python**     | ✅ Full Support | Dataclasses, Pydantic v2, TypedDict, modern type hints   |\n| **TypeScript** | 🚧 Coming Soon  | Interfaces, types, optional properties                   |\n| **Rust**       | 🚧 Coming Soon  | Structs, Serde annotations, Option types                 |\n\n---\n\n## Documentation\n\n- **API Documentation**: [https://ms-32154.github.io/py-json-analyzer/](https://ms-32154.github.io/py-json-analyzer/)\n- **GitHub Repository**: [https://github.com/MS-32154/py-json-analyzer](https://github.com/MS-32154/py-json-analyzer)\n- **Issue Tracker**: [https://github.com/MS-32154/py-json-analyzer/issues](https://github.com/MS-32154/py-json-analyzer/issues)\n\n---\n\n## Contributing\n\nContributions are welcome! Here's how to get started:\n\n1. **Fork** the repository\n2. **Clone** your fork: `git clone https://github.com/YOUR_USERNAME/py-json-analyzer`\n3. **Create** a feature branch: `git checkout -b feature/amazing-feature`\n4. **Make** your changes and add tests\n5. **Run** tests: `pytest`\n6. **Commit**: `git commit -m 'Add amazing feature'`\n7. **Push**: `git push origin feature/amazing-feature`\n8. **Open** a Pull Request\n\n### Development Setup\n\n```bash\n# Clone and setup\ngit clone https://github.com/MS-32154/py-json-analyzer\ncd py-json-analyzer\npip install -e \".[dev]\"\n\n# Run tests\npytest\n\n# Format code\nblack json_explorer/\nisort json_explorer/\n\n# Type checking (if using mypy)\nmypy json_explorer/\n```\n\n### Adding a New Language Generator\n\n1. Create `json_explorer/codegen/languages/yourlang/`\n2. Implement `generator.py` extending `CodeGenerator`\n3. Create templates in `templates/`\n4. Register in `json_explorer/codegen/languages/__init__.py`\n5. Add tests in `tests/codegen/languages/test_yourlang.py`\n\n---\n\n## Support\n\n### Getting Help\n\n- **Documentation**: Check the [API docs](https://ms-32154.github.io/py-json-analyzer/)\n- **Examples**: See the examples section above\n- **Issues**: [GitHub Issues](https://github.com/MS-32154/py-json-analyzer/issues)\n\n### Reporting Issues\n\nWhen reporting issues, please include:\n\n1. **Python version**: `python --version`\n2. **Package version**: `pip show py-json-analyzer`\n3. **Operating system**\n4. **Minimal reproducible example**\n5. **Full error traceback**\n6. **Expected vs actual behavior**\n\n### Feature Requests\n\nWe welcome feature requests! Please open an issue with:\n\n- Clear description of the feature\n- Use cases and benefits\n- Example of how it would work\n- Any relevant mockups or examples\n\n---\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n## Acknowledgments\n\n- **JMESPath**: Powerful JSON query language\n- **Rich**: Beautiful terminal formatting\n- **Plotly**: Interactive visualizations\n- **Jinja2**: Flexible template engine\n\n---\n\n## Author\n\n**MS-32154**\n\n- GitHub: [@MS-32154](https://github.com/MS-32154)\n- Email: msttoffg@gmail.com\n\n---\n\n**JSON Explorer** – © 2025 MS-32154. All rights reserved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fms-32154%2Fpy-json-analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fms-32154%2Fpy-json-analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fms-32154%2Fpy-json-analyzer/lists"}