jsonvetdocs1. One hand-written parser for six dialects, under a contract with check-json5 1.4

playgroundthis page on GitHub

1. One hand-written parser for six dialects, under a contract with check-json5 1.4

Status: accepted (2026-10-13)

Context

jsonvet 2.0 replaced check-json5 1.4 in place. A linter needs what a deserializer skips: an exact position for every problem, and every duplicate key with both positions. 1.4's users also need the hook to pass and fail the same files.

Options

Decision

One scanner, built for linting. Verdicts, exit codes and duplicate-key reports stay equal to 1.4; syntax-error wording is ours, marked Breaking.

Consequences

Confirmation

The differential CI job on every pull request, and the weekly fuzz run against serde_json and json5.

Revisit if

A maintained crate offers strict dialect modes with offsets and duplicate reports and passes our corpus, or 4.0 drops check-json5 compatibility.