pub struct LenientJsonDecoder { /* private fields */ }Expand description
A configurable JSON decoder for non-fully-trusted text inputs.
LenientJsonDecoder applies a small set of predictable normalization rules
before delegating actual parsing and deserialization to serde_json.
The decoder itself is stateless aside from its immutable configuration, so a single instance can be reused across many decoding calls.
Implementations§
Source§impl LenientJsonDecoder
impl LenientJsonDecoder
Sourcepub const fn new(options: JsonDecodeOptions) -> Self
pub const fn new(options: JsonDecodeOptions) -> Self
Creates a decoder with the exact normalization rules in options.
Reusing a decoder instance is recommended when multiple inputs should follow the same lenient decoding policy.
Sourcepub const fn options(&self) -> &JsonDecodeOptions
pub const fn options(&self) -> &JsonDecodeOptions
Returns the immutable options used by this decoder.
This accessor allows callers to inspect the effective configuration without cloning the decoder or duplicating the options elsewhere.
Sourcepub fn decode<T>(&self, input: &str) -> Result<T, JsonDecodeError>where
T: DeserializeOwned,
pub fn decode<T>(&self, input: &str) -> Result<T, JsonDecodeError>where
T: DeserializeOwned,
Decodes input into the target Rust type T.
This method does not constrain the JSON top-level structure. Arrays,
objects, scalars, and any other JSON value kinds are all allowed as long
as they can be deserialized into T.
The generic type T must implement DeserializeOwned, because the
decoder first builds an owned Value and then deserializes from it.
§Errors
Returns JsonDecodeError when the input becomes empty after
normalization, when the normalized text is not valid JSON, or when the
parsed JSON value cannot be deserialized into T.
Sourcepub fn decode_object<T>(&self, input: &str) -> Result<T, JsonDecodeError>where
T: DeserializeOwned,
pub fn decode_object<T>(&self, input: &str) -> Result<T, JsonDecodeError>where
T: DeserializeOwned,
Decodes input into a target type T, requiring a top-level JSON
object.
This method is useful for APIs that require a structured object at the top level and want an explicit error when an array or scalar is received.
§Errors
Returns JsonDecodeError when the input cannot be normalized into a
valid JSON value, when the top-level JSON kind is not an object, or
when the object cannot be deserialized into T.
Sourcepub fn decode_array<T>(&self, input: &str) -> Result<Vec<T>, JsonDecodeError>where
T: DeserializeOwned,
pub fn decode_array<T>(&self, input: &str) -> Result<Vec<T>, JsonDecodeError>where
T: DeserializeOwned,
Decodes input into a Vec<T>, requiring a top-level JSON array.
This method should be preferred over Self::decode when the caller
wants an explicit top-level array contract instead of relying on the
target type alone.
§Errors
Returns JsonDecodeError when the input cannot be normalized into a
valid JSON value, when the top-level JSON kind is not an array, or when
the array cannot be deserialized into Vec<T>.
Sourcepub fn decode_value(&self, input: &str) -> Result<Value, JsonDecodeError>
pub fn decode_value(&self, input: &str) -> Result<Value, JsonDecodeError>
Decodes input into a serde_json::Value.
This is the lowest-level public entry point. It exposes the normalized and parsed JSON value before any additional type-specific deserialization is attempted.
§Errors
Returns JsonDecodeError when the input is empty after normalization
or when the normalized text is not valid JSON syntax.
Trait Implementations§
Source§impl Clone for LenientJsonDecoder
impl Clone for LenientJsonDecoder
Source§fn clone(&self) -> LenientJsonDecoder
fn clone(&self) -> LenientJsonDecoder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more