Synchronized from bootc-dev/infra@3e0c644d17. Signed-off-by: bootc-dev Bot <bot@bootc.dev> |
||
|---|---|---|
| .claude | ||
| .gemini | ||
| .github/workflows | ||
| src | ||
| testdata | ||
| testdata-cjson-orig | ||
| .bootc-dev-infra-commit.txt | ||
| .gitignore | ||
| AGENTS.md | ||
| Cargo.toml | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| README.md | ||
README.md
RFC 8785 Canonical JSON serialization for Rust
This crate provides a serde_json::Formatter to serialize data in canonical JSON form as defined by RFC 8785.
use canon_json::CanonicalFormatter;
use serde::Serialize;
use serde_json::json;
let value = json!({"b": 12, "a": "qwerty"});
let mut buf = Vec::new();
let mut ser = serde_json::Serializer::with_formatter(&mut buf, CanonicalFormatter::new());
value.serialize(&mut ser).unwrap();
assert_eq!(buf, br#"{"a":"qwerty","b":12}"#);
History
This repository was originally forked from https://github.com/engineerd/cjson as it is unmaintained. But it ended up being redesigned to use the "formatter" approach that is used by olpc-cjson.