{"id":50566480,"url":"https://github.com/michurin/jray","last_synced_at":"2026-06-04T15:01:56.965Z","repository":{"id":355335379,"uuid":"1227668257","full_name":"michurin/jray","owner":"michurin","description":"jray is a CLI tool for exploring and inspecting JSON data. It flattens JSON into .path=value pairs and supports JSONL, nested JSON strings, base64-encoded JSON, timestamp and UUIDv7 parsing. It is useful for reviewing large, complex payloads and logs. It helps with preparing bug reports and issue descriptions.","archived":false,"fork":false,"pushed_at":"2026-05-16T04:42:38.000Z","size":36,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-16T05:46:25.500Z","etag":null,"topics":["base64","bug-reporting","json","json-inspector","json-parsing","json-path","timestamp","uuidv7"],"latest_commit_sha":null,"homepage":"","language":"Go","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/michurin.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-03T02:04:45.000Z","updated_at":"2026-05-16T04:42:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/michurin/jray","commit_stats":null,"previous_names":["michurin/jray"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/michurin/jray","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michurin%2Fjray","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michurin%2Fjray/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michurin%2Fjray/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michurin%2Fjray/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michurin","download_url":"https://codeload.github.com/michurin/jray/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michurin%2Fjray/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33910137,"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-06-04T02:00:06.755Z","response_time":64,"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":["base64","bug-reporting","json","json-inspector","json-parsing","json-path","timestamp","uuidv7"],"created_at":"2026-06-04T15:01:56.878Z","updated_at":"2026-06-04T15:01:56.959Z","avatar_url":"https://github.com/michurin.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jray\n\n[![build](https://github.com/michurin/jray/actions/workflows/ci.yaml/badge.svg)](https://github.com/michurin/jray/actions/workflows/ci.yaml)\n[![codecov](https://codecov.io/gh/michurin/jray/graph/badge.svg?token=HSQJS6AQFZ)](https://codecov.io/gh/michurin/jray)\n\n`jray` is a CLI utility for \"X-ray\" inspection of JSON data.\n\nLike an X-ray, it lets you see through complex, deeply nested,\nor even malformed structures by flattening them into\na clear list of `.path=value` pairs.\nThis makes the data easy to read, search, and include in bug reports.\n\n`jray` applies a set of heuristics to extract as much useful\ninformation as possible where conventional tools fail.\n\nIt automatically unpack common embedded encodings and formats,\nincluding timestamps, strings that contain JSON, and Base64-encoded JSON-data.\nSee examples and details below.\n\nGenerated paths are fully compatible with [`jq`](https://jqlang.org/).\n\nThe provided `.path=value` format is convenient to use with other command-line utilities\nsuch as [`diff`](https://man7.org/linux/man-pages/man1/diff.1.html)\nor [`grep`](https://man7.org/linux/man-pages/man1/grep.1.html).\n\nUse cases:\n\n* debugging and inspecting JSON\n* analyzing malformed or partially valid JSON-data\n* preparing clear and actionable bug reports\n* exploring unknown or complex JSON structures\n\n`jray` — when you don’t just want to read JSON, but see right through it.\n\n## Help message\n\n```\njray [-c] [-s] [-h] \u003cin.json \u003eout.txt\n  -c force colored output\n  -s shallow output (do not dive into JSON-strings)\n  -h help message\n```\n\n## Examples and demos\n\nReal output is colored.\n\n### It does the trick\n\n```sh\necho '{\"K\":\"V\",\"A\":[1,2,{\"e\":true}]}' | jray\n```\n\n```\n.K = V (string)\n.A[0] = 1 (float)\n.A[1] = 2 (float)\n.A[2].e = true (bool)\n```\n\n### It is error-tolerant\n\n```sh\necho '{\"A\":[1,{\"q\":[2' | jray\n```\n\n```\n.A[0] = 1 (float)\n.A[1].q[0] = 2 (float)\n.A[1].q[1]: [array] Unexpected EOF\n```\n\nIn some cases it shows context of error:\n\n```sh\necho '{\"data\":{\"key-a\":\"a\",\"key-b\":***}}' | jray\n```\n\n```\n.data.[\"key-a\"] = a (string)\n.data.[\"key-b\"]: [value] Parse error: (\"key-a\":\"a\",\"key-b\":***}}\\n) invalid character '*' looking for beginning of value\n```\n\n### It supports multiple JSON objects\n\n```sh\necho '{\"X\":1} {\"X\":2} {\"X\":3}' | jray\n```\n\n```\n.X = 1 (float)\n---\n.X = 2 (float)\n---\n.X = 3 (float)\n```\n\n### It supports embedded JSONs\n\n```sh\necho '{\"A\":false,\"B\":\"{\\\"x\\\":[1,2],\\\"y\\\":true}\",\"C\":\"just str\"}' | jray\n```\n\n```\n.A = false (bool)\n.B | .x[0] = 1 (float)\n.B | .x[1] = 2 (float)\n.B | .y = true (bool)\n.C = just str (string)\n```\n\n### It supports embedded base64 JSONs\n\n```sh\necho '[1,2,3]' | openssl enc -base64 # WzEsMiwzXQo=\necho '{\"A\":\"B\",\"V\":\"WzEsMiwzXQo=\"}' | jray\n```\n\n```\n.A = B\n.V # .[0] = 1 (float)\n.V # .[1] = 2 (float)\n.V # .[2] = 3 (float)\n```\n\n### Supports timestamps in seconds and milliseconds\n\n```sh\necho '[1777777777, 1777777777777]' | jray\n```\n\n```\n.[0] = 1777777777 (2026-05-03 03:09:37 UTC) (float/timestamp)\n.[1] = 1777777777777 (2026-05-03 03:09:37.777 UTC) (float/timestamp)\n```\n\n### Supports UUIDv7\n\n```sh\necho '{\"id\": \"019ddddd-dddd-7ddd-0123-456789abcdef\"}' | jray\n```\n\n```\n.id = 019ddddd-dddd-7ddd-0123-456789abcdef (2026-04-30 10:09:58.237 UTC) (string/UUIDv7)\n```\n\n### Supports non-unique keys\n\n```sh\necho '{\"A\":\"a\",\"A\":\"b\"}' | jray\n```\n\n```\n.A = a (string)\n.A = b (string)\n```\n\n## Install it and enjoy\n\n```sh\ngo install github.com/michurin/jray@latest\n```\n\n## Links\n\n- [Reddit: One more tool for JSON inspection](https://www.reddit.com/r/json/comments/1t2cz9e/one_more_tool_for_json_inspection/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichurin%2Fjray","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichurin%2Fjray","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichurin%2Fjray/lists"}