pub struct StreamDeserializer { /* private fields */ }Expand description
Reads a stream of JSON values (see deser::stream).
How the stream is split depends on DeserializerConfig::set_trailing:
Trailing::Strict: the stream holds a single value which is parsed once the whole stream was read.Trailing::Newline: every line holds a value (JSON Lines). Blank lines are skipped and errors only discard their line, reading continues with the next one.Trailing::Stop: values follow each other (optionally separated by whitespace) and are split where they end. Numbers at the end of the stream are only complete at the end of the stream, other values are complete once their last byte was read. Reading continues after values that fail to deserialize, values that are not valid JSON end the stream (unless they are read from their frames).
Except for JSON Lines, values which do not borrow are deserialized while
their input arrives (see
StreamDeserializer::drive_partial)
so only incomplete tokens are buffered.
use deser_jsonc::{DeserializerConfig, Trailing};
const LINES: DeserializerConfig =
DeserializerConfig::builder().trailing(Trailing::Newline).build();
let mut reader = LINES.reader(&b"[1, 2]\n[3]\n"[..]);
assert_eq!(reader.read::<Vec<u32>>().unwrap(), Some(vec![1, 2]));
assert_eq!(reader.read::<Vec<u32>>().unwrap(), Some(vec![3]));
assert_eq!(reader.read::<Vec<u32>>().unwrap(), None);Values which are read from their frames are parsed like with a
Deserializer, so they can borrow from the stream’s buffer (see
InputBuffer::deserialize). The input ranges (and thus
locations) of these values refer to the start of their line (or value),
those of values that are deserialized while their input arrives to the
stream.
Implementations§
Source§impl StreamDeserializer
impl StreamDeserializer
Sourcepub fn new() -> StreamDeserializer
pub fn new() -> StreamDeserializer
Creates a stream deserializer.
Sourcepub fn with_config(config: DeserializerConfig) -> StreamDeserializer
pub fn with_config(config: DeserializerConfig) -> StreamDeserializer
Creates a stream deserializer with the given configuration.
Sourcepub fn config(&self) -> &DeserializerConfig
pub fn config(&self) -> &DeserializerConfig
Returns the configuration.
Trait Implementations§
Source§impl Debug for StreamDeserializer
impl Debug for StreamDeserializer
Source§impl Default for StreamDeserializer
impl Default for StreamDeserializer
Source§fn default() -> StreamDeserializer
fn default() -> StreamDeserializer
Source§impl StreamDeserializer for StreamDeserializer
impl StreamDeserializer for StreamDeserializer
Source§fn supports_partial(&self) -> bool
fn supports_partial(&self) -> bool
JSON Lines are read line by line, the other values while their input arrives.