All Projects → cburgmer → json-path-comparison

cburgmer / json-path-comparison

Licence: GPL-3.0 license
Comparison of the different implementations of JSONPath and language agnostic test suite.

Programming Languages

shell
77523 projects
javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
C#
18002 projects
go
31211 projects - #10 most used programming language
elixir
2628 projects

Projects that are alternatives of or similar to json-path-comparison

standard-components
A specification for functional UI components
Stars: ✭ 52 (-18.75%)
Mutual labels:  standard
standard
The Standard for Public Code - a model for public organizations to build their own open source solutions to enable successful future reuse by similar public organizations in other places.
Stars: ✭ 81 (+26.56%)
Mutual labels:  standard
won
A new way to see HTML Web Pages
Stars: ✭ 15 (-76.56%)
Mutual labels:  comparison
oidc
Easy to use OpenID Connect client and server library written for Go and certified by the OpenID Foundation
Stars: ✭ 475 (+642.19%)
Mutual labels:  standard
ethereum-erc20
Fungible token implementation for the Ethereum blockchain.
Stars: ✭ 27 (-57.81%)
Mutual labels:  standard
jsonpath
No description or website provided.
Stars: ✭ 117 (+82.81%)
Mutual labels:  jsonpath
PHPench
Realtime benchmarks for PHP code
Stars: ✭ 53 (-17.19%)
Mutual labels:  comparison
resvg-test-suite
resvg test suite
Stars: ✭ 17 (-73.44%)
Mutual labels:  test-suite
frameworks-code-comparison
🆚 🔥 Code comparison of modern web frameworks, based on React, Angular and Vue.js
Stars: ✭ 87 (+35.94%)
Mutual labels:  comparison
illogical
A micro conditional javascript engine used to parse the raw logical and comparison expressions, evaluate the expression in the given data context, and provide access to a text form of the given expressions.
Stars: ✭ 16 (-75%)
Mutual labels:  comparison
VBA-Coding-Standards
VBA Code Guidelines
Stars: ✭ 36 (-43.75%)
Mutual labels:  standard
yamlpath
Command-line get/set/merge/validate/scan/convert/diff processors for YAML/JSON/Compatible data using powerful, intuitive, command-line friendly syntax.
Stars: ✭ 78 (+21.88%)
Mutual labels:  jsonpath
reactive-states
Reactive state implementations (brainstorming)
Stars: ✭ 51 (-20.31%)
Mutual labels:  comparison
scif
scientific filesystem: a filesystem organization for scientific software and metadata
Stars: ✭ 30 (-53.12%)
Mutual labels:  standard
fs2-data
streaming data parsing and transformation library
Stars: ✭ 103 (+60.94%)
Mutual labels:  jsonpath
healthier
🧘‍♀️ Healthier is an opinionated style agnostic code linter – a friendly companion to Prettier
Stars: ✭ 78 (+21.88%)
Mutual labels:  standard
ajson
Abstract JSON for Golang with JSONPath support
Stars: ✭ 144 (+125%)
Mutual labels:  jsonpath
speech-recognition-evaluation
Evaluate results from ASR/Speech-to-Text quickly
Stars: ✭ 25 (-60.94%)
Mutual labels:  comparison
BrAPI
Repository for version control of the BrAPI specifications
Stars: ✭ 50 (-21.87%)
Mutual labels:  standard
spec
Ecma TC53 spec work
Stars: ✭ 18 (-71.87%)
Mutual labels:  standard

json-path-comparison

Comparison of the different implementations of JSONPath and language agnostic test suite.

See https://cburgmer.github.io/json-path-comparison/ for the table generated from the queries in ./queries.

Goals

  • Show implementation status of well established implementations.
  • Inform emerging specification on existing de facto standard.
  • Support implementers with test cases.

How to

Regression test suite

If you are an author of an upstream implementation, you can use the report generated here to test for regressions in your logic. The regression_suite/regression_suite.yaml holds all queries and includes a consensus where one exists. Additionally a report is generated for every implementation which contains current results for queries where the consensus isn't matched or no consensus exists (see e.g. regression_suite/Clojure_json-path.yaml).

See for example the Clojure json-path regression test on how those files can be put to use.

(Re-)Run the comparison locally

To update the reports checked into Git under ./docs and others, run:

./src/with_native.sh ninja
open docs/index.html

Alternatively, you can use Docker to provide the dependencies via

./src/with_docker.sh ninja

This will take a while and some network bandwidth but has the benefit that you won't have to install anything locally.

One-off comparisons

You can quickly execute a query against all implementations by running:

echo '{"a": 1}' | ./src/with_native.sh ./src/one_off.sh '$.a'

(Or use ./src/with_docker.sh if you prefer Docker.)

Errors

Some of the complexity sadly brings its own set of errors

  • If Ninja fails, the failing step is unlikely to be the last (as it will let parallel requests finish first). Search for FAILED to identify the failing step. The error is most likely captured in the output file (the part behind the >). Debug from there.
  • Some executions might run into timeouts rather randomly (especially when the machine is under high load). The timeout mechanism is necessary as not all implementations play nice, however will sometimes skew the results. Currently the best fix is to remove the output of the query that ran into a timeout, e.g. rm -r build/results/bracket_notation_with_number_on_short_array for a whole query, and re-running Ninja to force a re-build.
  • Docker might fail building on re-runs due to an outdated package index. Quickest fix is to run docker rmi json-path-comparison and start from scratch.
  • Out of memory on Docker: Some compile steps (looking at you, Haskell) seem to need a lot of memory. Increasing the available memory for Docker should help.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].