vexy-json 1.5.12

A forgiving JSON parser that accepts non-standard JSON formats
Documentation

Vexy JSON

Vexy JSON is a forgiving JSON parser for Rust and Python. It accepts standard JSON as well as practical extensions commonly found in configuration files and LLM output, while still producing ordinary JSON values.

Supported extensions include comments, trailing commas, single-quoted strings, unquoted object keys, implicit top-level objects and arrays, newline separators, and binary, octal, hexadecimal, or underscore-separated numbers.

Rust

Add the high-level crate:

[dependencies]
vexy-json = "1.5.11"

Parse forgiving JSON with the default options:

use vexy_json::parse;

fn main() -> vexy_json::Result<()> {
    let value = parse("{name: 'Vexy', enabled: true,}")?;
    println!("{value}");
    Ok(())
}

The workspace also publishes focused crates for the core parser, CLI, Serde integration, WebAssembly bindings, and the C API.

Python

Install the native Python package:

python -m pip install vexy-json
import vexy_json

value = vexy_json.parse("{name: 'Vexy', enabled: true,}")
assert value == {"name": "Vexy", "enabled": True}

Command line

Install the CLI from crates.io:

cargo install vexy-json-cli

Then parse a file or standard input with vexy-json.

Development

Run the repository's complete formatting, linting, Rust, and packaged-Python gate with:

./build.sh

Do not invoke individual Cargo test or lint commands for release verification; build.sh is the canonical gate and records its output in build.log.txt.

Install the Rust CLI under ~/.local and the Python extension into the system Python selected by uv with:

./install.sh

The installer resolves one unmanaged interpreter with uv python find --system --no-managed-python, builds a matching native wheel, and installs it explicitly with uv pip install --system. Pass --prefix PATH to change only the Rust CLI installation prefix.

Releasing

./publish.sh verifies the repository boundary, checkpoints intended changes, runs the complete build, creates and verifies the release tag, then publishes the workspace crates in dependency order followed by the Python package. Python distributions are built with uv build and uploaded with uv publish.

If publication stops after a tag is created, check crates.io and PyPI before retrying anything. Registry uploads are irreversible, and a transport error can be ambiguous. Resume only the artifacts confirmed absent; do not rerun the full script, because the next version is derived from existing tags.

The root Rust package deliberately includes only its manifest, license, README, build script, Rust source, examples, tests, and benchmarks. Generated documentation, installers, previous release archives, and local development artifacts are not shipped to crates.io.

License

Licensed under either the MIT License or the Apache License 2.0, at your option.