Skip to main content

LenientJsonDecoder

Struct LenientJsonDecoder 

Source
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.

Implementations§

Source§

impl LenientJsonDecoder

Source

pub const fn new(options: JsonDecodeOptions) -> Self

Creates a decoder with the exact normalization rules in options.

§Parameters
  • options - Immutable normalization and error-diagnostic options.
§Returns

A decoder configured with options.

Source

pub const fn options(&self) -> &JsonDecodeOptions

Returns the immutable options used by this decoder.

§Returns

The option set supplied when the decoder was created.

Source

pub fn decode<T>(&self, input: &str) -> Result<T, JsonDecodeError>

Decodes input into the target Rust type T without a top-level structure constraint.

§Parameters
  • input - Raw JSON text to normalize and deserialize.
§Returns

The deserialized target value.

§Errors

Returns JsonDecodeError when input normalization, JSON parsing, or target deserialization fails.

§Panics

Panics when the serde::Deserialize implementation for T panics.

Source

pub fn decode_slice<T>(&self, input: &[u8]) -> Result<T, JsonDecodeError>

Decodes UTF-8 input bytes into the target Rust type.

The configured raw byte limit is enforced before UTF-8 validation. Valid UTF-8 is borrowed and delegated to the string decoder.

§Parameters
  • input - Raw JSON bytes to validate, normalize, and deserialize.
§Returns

The deserialized target value.

§Errors

Returns a JSON decode error when the raw byte limit is exceeded, the bytes are not valid UTF-8, or subsequent JSON decoding fails.

§Panics

Panics when the serde::Deserialize implementation for T panics.

Source

pub fn decode_object<T>(&self, input: &str) -> Result<T, JsonDecodeError>

Decodes input into T, requiring a top-level JSON object.

The target is deserialized directly from normalized text after a top-level check, preserving serde’s duplicate-field and number handling semantics.

§Parameters
  • input - Raw JSON text to normalize and deserialize.
§Returns

The deserialized target value when the normalized input is a JSON object.

§Errors

Returns JsonDecodeError when normalization or parsing fails, when the top-level value is not an object, or when the object cannot be deserialized into T.

§Panics

Panics when the serde::Deserialize implementation for T panics.

Source

pub fn decode_array<T>(&self, input: &str) -> Result<Vec<T>, JsonDecodeError>

Decodes input into Vec<T>, requiring a top-level JSON array.

The elements are deserialized directly from normalized text after a top-level check.

§Parameters
  • input - Raw JSON text to normalize and deserialize.
§Returns

The deserialized elements when the normalized input is a JSON array.

§Errors

Returns JsonDecodeError when normalization or parsing fails, when the top-level value is not an array, or when an element cannot be deserialized into T.

§Panics

Panics when the serde::Deserialize implementation for T panics.

Source

pub fn decode_value(&self, input: &str) -> Result<Value, JsonDecodeError>

Decodes input into a serde_json::Value.

This entry point intentionally constructs a JSON DOM because its public return type is Value.

§Parameters
  • input - Raw JSON text to normalize and parse.
§Returns

The parsed dynamic JSON value.

§Errors

Returns JsonDecodeError when input normalization or JSON parsing fails.

Trait Implementations§

Source§

impl Clone for LenientJsonDecoder

Source§

fn clone(&self) -> LenientJsonDecoder

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LenientJsonDecoder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for LenientJsonDecoder

Source§

fn default() -> LenientJsonDecoder

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.