Expand description
§vr-jcs
RFC 8785 JSON Canonicalization Scheme (JCS) for Rust.
Produces canonical JSON suitable for deterministic digest computation, content hashing, and stable serialization boundaries. Implements the RFC 8785 rules that materially affect wire compatibility:
- UTF-16 code-unit sorting for object property names
- ECMAScript-compatible primitive serialization
- UTF-8 output without insignificant whitespace
- duplicate-property rejection on raw JSON parse paths
- I-JSON string / number validation
§API
§Strict path (for untrusted JSON)
to_canon_bytes_from_slice— Parse untrusted JSON, apply strict admission checks, emit canonical bytesto_canon_string_from_str— Parse untrusted JSON string, apply strict admission checks, emit canonical string
§Typed path (caller-controlled construction only, deprecated)
to_canon_bytes— Serialize anySerializetype to canonical JSON bytesto_canon_string— Serialize anySerializetype to a canonical JSON string
§In-place
canonicalize— Sort object keys recursively in aserde_json::Value
§Usage
let json = vr_jcs::to_canon_string_from_str(r#"{"z_field":1,"a_field":2}"#)?;
assert_eq!(json, r#"{"a_field":2,"z_field":1}"#);Enums§
- JcsError
- Error type for canonical JSON operations.
Constants§
- MAX_
NESTING_ DEPTH - Maximum permitted nesting depth for JSON structures (128).
Functions§
- canonicalize
- Recursively sort all object keys in a JSON value for canonical representation.
- to_
canon_ bytes Deprecated - Serialize any
Serializetype to canonical JSON bytes. - to_
canon_ bytes_ from_ slice - Parse untrusted JSON, apply strict admission checks, and emit canonical RFC 8785 bytes.
- to_
canon_ string Deprecated - Serialize any
Serializetype to a canonical JSON string. - to_
canon_ string_ from_ str - Parse untrusted JSON text, apply strict admission checks, and emit a canonical RFC 8785 string.