Module rewrite
Expand description
Streaming JSON rewriting.
This module supports streaming replacement and removal for scalar values and whole object/array subtrees. A replaced or removed container is suppressed as the tokenizer streams through it, so non-capturing rewrites do not need to buffer the subtree.
§Example
use rama_json::{
path::JsonPath,
rewrite::{JsonHandlers, raw_json, rewrite_bytes},
};
let input = br#"{"id":1,"prompt":{"text":"secret"},"extensions":[{"id":1},{"id":2}]}"#;
let output = rewrite_bytes(
input,
JsonHandlers::new()
.on(JsonPath::builder().member("prompt").build(), |value| {
value.remove();
Ok(())
})
.on(
JsonPath::builder().member("extensions").index(0).build(),
|value| value.replace(raw_json(br#"{"id":9}"#)),
),
)?;
assert_eq!(output, br#"{"id":1,"extensions":[{"id":9},{"id":2}]}"#);Structs§
- Json
Handlers - Closure-based handler builder.
- Json
Rewriter - Streaming JSON rewriter.
- Json
Value - One selected JSON value.
- RawJson
- Already serialized JSON replacement bytes.
- Serde
Json - JSON replacement value encoded through serde.
Enums§
- Json
Kind - JSON value kind.
Traits§
- Json
Value Handler - Handles a selected JSON value.
- Json
Writable - A value that can be written as JSON replacement bytes.
Functions§
- raw_
json - Wraps already serialized JSON replacement bytes.
- rewrite_
bytes - Rewrites a complete JSON byte slice.
- serde_
json_ value - Wraps a value that should be encoded as JSON through serde.
Type Aliases§
- Handler
Result - Result returned by JSON rewrite handlers.