{"id":13539715,"url":"https://github.com/cburgmer/json-path-comparison","last_synced_at":"2025-10-12T22:33:33.879Z","repository":{"id":37008698,"uuid":"190932008","full_name":"cburgmer/json-path-comparison","owner":"cburgmer","description":"Comparison of the different implementations of JSONPath and language agnostic test suite.","archived":false,"fork":false,"pushed_at":"2025-10-06T20:18:52.000Z","size":15012,"stargazers_count":94,"open_issues_count":32,"forks_count":27,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-10-06T21:15:22.265Z","etag":null,"topics":["comparison","jsonpath","standard","test-suite"],"latest_commit_sha":null,"homepage":"https://cburgmer.github.io/json-path-comparison/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cburgmer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2019-06-08T20:28:38.000Z","updated_at":"2025-10-06T20:18:56.000Z","dependencies_parsed_at":"2024-01-14T07:14:45.768Z","dependency_job_id":"6a362202-eb43-4e8d-af78-d9ec6e890df6","html_url":"https://github.com/cburgmer/json-path-comparison","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cburgmer/json-path-comparison","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cburgmer%2Fjson-path-comparison","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cburgmer%2Fjson-path-comparison/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cburgmer%2Fjson-path-comparison/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cburgmer%2Fjson-path-comparison/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cburgmer","download_url":"https://codeload.github.com/cburgmer/json-path-comparison/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cburgmer%2Fjson-path-comparison/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279013269,"owners_count":26085250,"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-10-12T02:00:06.719Z","response_time":53,"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":["comparison","jsonpath","standard","test-suite"],"created_at":"2024-08-01T09:01:30.814Z","updated_at":"2025-10-12T22:33:33.833Z","avatar_url":"https://github.com/cburgmer.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# json-path-comparison\nComparison of the different implementations of\n[JSONPath](https://goessner.net/articles/JsonPath/) and language agnostic test\nsuite.\n\nSee https://cburgmer.github.io/json-path-comparison/ for the table generated\nfrom the queries in [./queries](./queries).\n\n## Goals\n\n- Show implementation status of well established implementations.\n- Inform [emerging specification](https://github.com/ietf-wg-jsonpath/draft-ietf-jsonpath-jsonpath)\n  on existing de facto standard.\n- Support implementers with test cases.\n\n## How to\n\n### Regression test suite\n\nIf you are an author of an upstream implementation, you can use the report\ngenerated here to test for regressions in your logic. The\n[regression_suite/regression_suite.yaml](./regression_suite/regression_suite.yaml) holds\nall queries and includes a consensus where one exists. Additionally\na report is generated for every implementation which contains current results\nfor queries where the consensus isn't matched or no consensus exists (see\ne.g. [regression_suite/Clojure_json-path.yaml](./regression_suite/Clojure_json-path.yaml)).\n\nSee for example the [Clojure json-path regression test](https://github.com/gga/json-path/blob/master/test/json_path/test/regression_test.clj)\non how those files can be put to use.\n\n### (Re-)Run the comparison locally\n\nTo update the reports checked into Git under ./docs and others, run:\n\n    ./src/with_native.sh ninja\n    open docs/index.html\n\nAlternatively, you can use Docker to provide the dependencies via\n\n    ./src/with_docker.sh ninja\n\nThis will take a while and some network bandwidth but has the benefit that you\nwon't have to install anything locally.\n\n### One-off comparisons\n\nYou can quickly execute a query against all implementations by running:\n\n    echo '{\"a\": 1}' | ./src/with_native.sh ./src/one_off.sh '$.a'\n\n(Or use ./src/with_docker.sh if you prefer Docker.)\n\n### Errors\n\nSome of the complexity sadly brings its own set of errors\n\n- If Ninja fails, the failing step is unlikely to be the last (as it will let\n  parallel requests finish first). Search for `FAILED` to identify the failing\n  step. The error is most likely captured in the output file (the part behind\n  the `\u003e`). Debug from there.\n- Some executions might run into timeouts rather randomly (especially when the\n  machine is under high load). The timeout mechanism is necessary as not all\n  implementations play nice, however will sometimes skew the results.\n  Currently the best fix is to remove the output of the query that ran into a\n  timeout, e.g.\n  `rm -r build/results/bracket_notation_with_number_on_short_array` for a whole\n  query, and re-running Ninja to force a re-build.\n- Docker might fail building on re-runs due to an outdated package index.\n  Quickest fix is to run `docker rmi json-path-comparison` and start from\n  scratch.\n- Out of memory on Docker: Some compile steps (looking at you, Haskell) seem to\n  need a lot of memory. Increasing the available memory for Docker should help.\n- In some regions, the download speeds for build requirements on the official\n  site can sometimes have unbearably slow.\n  However, certain implementations may be able to utilize the nearest mirror\n  site by utilizing environment variables.\n  - For `./src/with_docker.sh`:\n    Write to `./src/docker_env_file.txt` in accordance with the `--env-file`\n    option specified in the `docker run` command.\n  - For `./src/with_native.sh`:\n    Directly export environment variables.\n- If docker build fails on M1 with Colima, maybe\n  https://www.tyler-wright.com/using-colima-on-an-m1-m2-mac/ helps.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcburgmer%2Fjson-path-comparison","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcburgmer%2Fjson-path-comparison","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcburgmer%2Fjson-path-comparison/lists"}