pub struct JsonError { /* private fields */ }
Expand description
This type represents all possible errors that can occur when serializing or deserializing JSON data.
Implementations§
source§impl Error
impl Error
sourcepub fn line(&self) -> usize
Available on non-crate feature simd_json
only.
pub fn line(&self) -> usize
simd_json
only.One-based line number at which the error was detected.
Characters in the first line of the input (before the first newline character) are in line 1.
sourcepub fn column(&self) -> usize
Available on non-crate feature simd_json
only.
pub fn column(&self) -> usize
simd_json
only.One-based column number at which the error was detected.
The first character in the input and any characters immediately following a newline character are in column 1.
Note that errors may occur in column 0, for example if a read from an I/O stream fails immediately following a previously read newline character.
sourcepub fn classify(&self) -> Category
Available on non-crate feature simd_json
only.
pub fn classify(&self) -> Category
simd_json
only.Categorizes the cause of this error.
Category::Io
- failure to read or write bytes on an I/O streamCategory::Syntax
- input that is not syntactically valid JSONCategory::Data
- input data that is semantically incorrectCategory::Eof
- unexpected end of the input data
sourcepub fn is_io(&self) -> bool
Available on non-crate feature simd_json
only.
pub fn is_io(&self) -> bool
simd_json
only.Returns true if this error was caused by a failure to read or write bytes on an I/O stream.
sourcepub fn is_syntax(&self) -> bool
Available on non-crate feature simd_json
only.
pub fn is_syntax(&self) -> bool
simd_json
only.Returns true if this error was caused by input that was not syntactically valid JSON.
sourcepub fn is_data(&self) -> bool
Available on non-crate feature simd_json
only.
pub fn is_data(&self) -> bool
simd_json
only.Returns true if this error was caused by input data that was semantically incorrect.
For example, JSON containing a number is semantically incorrect when the type being deserialized into holds a String.
sourcepub fn is_eof(&self) -> bool
Available on non-crate feature simd_json
only.
pub fn is_eof(&self) -> bool
simd_json
only.Returns true if this error was caused by prematurely reaching the end of the input data.
Callers that process streaming input may be interested in retrying the deserialization once more data is available.
sourcepub fn io_error_kind(&self) -> Option<ErrorKind>
Available on non-crate feature simd_json
and crate feature std
only.
pub fn io_error_kind(&self) -> Option<ErrorKind>
simd_json
and crate feature std
only.The kind reported by the underlying standard library I/O error, if this error was caused by a failure to read or write bytes on an I/O stream.
§Example
use serde_json::Value;
use std::io::{self, ErrorKind, Read};
use std::process;
struct ReaderThatWillTimeOut<'a>(&'a [u8]);
impl<'a> Read for ReaderThatWillTimeOut<'a> {
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
if self.0.is_empty() {
Err(io::Error::new(ErrorKind::TimedOut, "timed out"))
} else {
self.0.read(buf)
}
}
}
fn main() {
let reader = ReaderThatWillTimeOut(br#" {"k": "#);
let _: Value = match serde_json::from_reader(reader) {
Ok(value) => value,
Err(error) => {
if error.io_error_kind() == Some(ErrorKind::TimedOut) {
// Maybe this application needs to retry certain kinds of errors.
} else {
eprintln!("error: {}", error);
process::exit(1);
}
}
};
}
Trait Implementations§
source§impl Error for Error
impl Error for Error
source§fn custom<T>(msg: T) -> Errorwhere
T: Display,
fn custom<T>(msg: T) -> Errorwhere
T: Display,
source§fn invalid_type(unexp: Unexpected<'_>, exp: &dyn Expected) -> Error
fn invalid_type(unexp: Unexpected<'_>, exp: &dyn Expected) -> Error
Deserialize
receives a type different from what it was
expecting. Read moresource§fn invalid_value(unexp: Unexpected<'_>, exp: &dyn Expected) -> Error
fn invalid_value(unexp: Unexpected<'_>, exp: &dyn Expected) -> Error
Deserialize
receives a value of the right type but that
is wrong for some other reason. Read moresource§fn invalid_length(len: usize, exp: &dyn Expected) -> Self
fn invalid_length(len: usize, exp: &dyn Expected) -> Self
source§fn unknown_variant(variant: &str, expected: &'static [&'static str]) -> Self
fn unknown_variant(variant: &str, expected: &'static [&'static str]) -> Self
Deserialize
enum type received a variant with an
unrecognized name.source§fn unknown_field(field: &str, expected: &'static [&'static str]) -> Self
fn unknown_field(field: &str, expected: &'static [&'static str]) -> Self
Deserialize
struct type received a field with an
unrecognized name.source§fn missing_field(field: &'static str) -> Self
fn missing_field(field: &'static str) -> Self
Deserialize
struct type expected to receive a required
field with a particular name but that field was not present in the
input.source§fn duplicate_field(field: &'static str) -> Self
fn duplicate_field(field: &'static str) -> Self
Deserialize
struct type received more than one of the
same field.