{"id":51635730,"url":"https://github.com/zcfan/az-json-explorer","last_synced_at":"2026-07-13T14:03:40.619Z","repository":{"id":369641672,"uuid":"1289906001","full_name":"zcfan/az-json-explorer","owner":"zcfan","description":"Chrome extension for browsing large JSON documents","archived":false,"fork":false,"pushed_at":"2026-07-06T07:49:35.000Z","size":379,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-06T09:17:40.746Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zcfan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-05T10:54:36.000Z","updated_at":"2026-07-06T07:49:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zcfan/az-json-explorer","commit_stats":null,"previous_names":["zcfan/az-json-explorer"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/zcfan/az-json-explorer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcfan%2Faz-json-explorer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcfan%2Faz-json-explorer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcfan%2Faz-json-explorer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcfan%2Faz-json-explorer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zcfan","download_url":"https://codeload.github.com/zcfan/az-json-explorer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcfan%2Faz-json-explorer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35424575,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-13T02:00:06.543Z","response_time":119,"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":[],"created_at":"2026-07-13T14:03:39.924Z","updated_at":"2026-07-13T14:03:40.614Z","avatar_url":"https://github.com/zcfan.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AZ JSON Explorer\n\nFast Chrome MV3 JSON viewer for developers who inspect API responses, logs, fixtures, and local JSON files.\n\nAZ JSON Explorer focuses on two problems that make JSON tools feel slow or awkward:\n\n- Large JSON should stay responsive while parsing, searching, expanding, and scrolling.\n- String fields that contain escaped JSON should be explorable in place with `Parse as JSON`, not copied into another tool.\n\n![AZ JSON Explorer detects nested JSON strings](store-assets/screenshot-1-detect-nested-json-string-1280x800.png)\n\n## Why Use It\n\nMany real API and log payloads contain values like this:\n\n```json\n{\n  \"event\": \"checkout\",\n  \"payload\": \"{\\\"userId\\\":123,\\\"items\\\":[{\\\"sku\\\":\\\"A1\\\"}]}\"\n}\n```\n\nMost viewers stop at the escaped string. AZ JSON Explorer detects string values that look like JSON and shows `Parse as JSON` beside them. Clicking it parses that string into a normal expandable tree node, keeps the original string available, and lets you toggle between `parsed` and `raw`.\n\n## Performance First\n\nThe viewer is built around a simple rule: the browser main thread should coordinate the UI, not do all the heavy JSON work.\n\n- Root JSON parsing runs in a Web Worker.\n- Nested `Parse as JSON` parsing runs in the same worker and is cached by path.\n- Tree row preparation yields during large traversals instead of monopolizing the event loop.\n- The UI uses virtual scrolling, so it renders only the rows visible in the viewport plus a small overscan buffer.\n- Full-text search runs in the worker. Long string values are scanned in chunks.\n- The standalone file-open path passes a `File` to the worker and does not mirror large file contents into the manual input textarea.\n\nFor very large local files, prefer the standalone viewer's `Open file` flow over opening a `file://` URL directly in Chrome. Direct file previews work, but the standalone file path avoids unnecessary page replacement overhead.\n\n## Features\n\n- Replaces raw JSON pages with an interactive tree viewer.\n- Opens a standalone viewer from the extension popup.\n- Supports manual paste, sample JSON, and local file loading.\n- Shows `Parse as JSON` for string values whose trimmed content starts with `{` or `[`.\n- Caches parsed nested string values and toggles them between `parsed` and `raw`.\n- Supports expand/collapse, root expansion, path-aware row titles, and full-text search.\n- Keeps JSON processing local in the browser. There is no backend service.\n\nThis project is intentionally not a JSON editor. It does not modify, upload, sync, or store your JSON on an external server.\n\n## Install And Try\n\nInstall the published extension from the [Chrome Web Store](https://chromewebstore.google.com/detail/az-json-explorer/logkfmmknmmkpflgamhddeaedneaankj).\n\nFor local development, there is no build step. Chrome loads the repository files directly:\n\n1. Clone or download this repository.\n2. Open `chrome://extensions` in Chrome.\n3. Enable `Developer mode`.\n4. Click `Load unpacked`.\n5. Select this repository folder.\n6. Open a raw JSON URL, or click the extension action and choose `Open AZ JSON Explorer`.\n\nTo preview local `file://` JSON pages directly:\n\n1. Open the extension details page in `chrome://extensions`.\n2. Enable `Allow access to file URLs`.\n3. Open a local `.json` file in Chrome.\n\nTo test without changing Chrome file permissions, use the extension popup:\n\n1. Click the AZ JSON Explorer extension icon.\n2. Choose `Open AZ JSON Explorer`.\n3. Click `Sample`, paste JSON and click `Parse input`, or click `Open file`.\n\n## Development\n\nInstall dependencies only if your environment needs them for npm scripts. The current project uses Node's built-in test runner.\n\n```bash\nnpm test\n```\n\nGenerate a large local fixture:\n\n```bash\nnode fixtures/large-sample-generator.mjs 50000\n```\n\nRegenerate Chrome Web Store assets:\n\n```bash\nnpm run store-assets\n```\n\n## Project Map\n\n- `manifest.json`: Chrome MV3 extension manifest.\n- `src/contentScript.js`: detects raw JSON pages and mounts the viewer iframe.\n- `src/core/pageJsonDetection.js`: decides whether the current page is raw JSON.\n- `src/viewer.html` and `src/viewer.js`: shared standalone and embedded viewer shell.\n- `src/ui/viewerApp.js`: virtualized tree UI, user actions, search UI, and file/manual input flows.\n- `src/worker/jsonWorker.js`: root parsing, nested string parsing, visible row collection, and search.\n- `src/core/treeModel.js`: JSON tree row model.\n- `src/core/parseCache.js`: parsed-string cache and `raw`/`parsed` display state.\n- `test/*.test.mjs`: Node tests for parsing, tree, search, detection, and project-file invariants.\n\n## Large JSON Notes\n\nAZ JSON Explorer is designed for large payloads, but Chrome still has finite memory. A few implementation limits are intentional:\n\n- Visible row preparation caps at 100,000 rows for a single expanded view.\n- Search returns up to 500 matches at a time.\n- Long strings are chunk-scanned to avoid one large blocking scan.\n\nThese limits keep the viewer predictable under load instead of trying to render or return everything at once.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzcfan%2Faz-json-explorer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzcfan%2Faz-json-explorer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzcfan%2Faz-json-explorer/lists"}