# Crate Documentation **Version:** 1.0.145 **Format Version:** 56 # Module `serde_json` # Serde JSON JSON is a ubiquitous open-standard format that uses human-readable text to transmit data objects consisting of key-value pairs. ```json { "name": "John Doe", "age": 43, "address": { "street": "10 Downing Street", "city": "London" }, "phones": [ "+44 1234567", "+44 2345678" ] } ``` There are three common ways that you might find yourself needing to work with JSON data in Rust. - **As text data.** An unprocessed string of JSON data that you receive on an HTTP endpoint, read from a file, or prepare to send to a remote server. - **As an untyped or loosely typed representation.** Maybe you want to check that some JSON data is valid before passing it on, but without knowing the structure of what it contains. Or you want to do very basic manipulations like insert a key in a particular spot. - **As a strongly typed Rust data structure.** When you expect all or most of your data to conform to a particular structure and want to get real work done without JSON's loosey-goosey nature tripping you up. Serde JSON provides efficient, flexible, safe ways of converting data between each of these representations. # Operating on untyped JSON values Any valid JSON data can be manipulated in the following recursive enum representation. This data structure is [`serde_json::Value`][value]. ``` # use serde_json::{Number, Map}; # # #[allow(dead_code)] enum Value { Null, Bool(bool), Number(Number), String(String), Array(Vec), Object(Map), } ``` A string of JSON data can be parsed into a `serde_json::Value` by the [`serde_json::from_str`][from_str] function. There is also [`from_slice`] for parsing from a byte slice `&[u8]` and [`from_reader`] for parsing from any `io::Read` like a File or a TCP stream. ``` use serde_json::{Result, Value}; fn untyped_example() -> Result<()> { // Some JSON input data as a &str. Maybe this comes from the user. let data = r#" { "name": "John Doe", "age": 43, "phones": [ "+44 1234567", "+44 2345678" ] }"#; // Parse the string of data into serde_json::Value. let v: Value = serde_json::from_str(data)?; // Access parts of the data by indexing with square brackets. println!("Please call {} at the number {}", v["name"], v["phones"][0]); Ok(()) } # # fn main() { # untyped_example().unwrap(); # } ``` The result of square bracket indexing like `v["name"]` is a borrow of the data at that index, so the type is `&Value`. A JSON map can be indexed with string keys, while a JSON array can be indexed with integer keys. If the type of the data is not right for the type with which it is being indexed, or if a map does not contain the key being indexed, or if the index into a vector is out of bounds, the returned element is `Value::Null`. When a `Value` is printed, it is printed as a JSON string. So in the code above, the output looks like `Please call "John Doe" at the number "+44 1234567"`. The quotation marks appear because `v["name"]` is a `&Value` containing a JSON string and its JSON representation is `"John Doe"`. Printing as a plain string without quotation marks involves converting from a JSON string to a Rust string with [`as_str()`] or avoiding the use of `Value` as described in the following section. [`as_str()`]: crate::Value::as_str The `Value` representation is sufficient for very basic tasks but can be tedious to work with for anything more significant. Error handling is verbose to implement correctly, for example imagine trying to detect the presence of unrecognized fields in the input data. The compiler is powerless to help you when you make a mistake, for example imagine typoing `v["name"]` as `v["nmae"]` in one of the dozens of places it is used in your code. # Parsing JSON as strongly typed data structures Serde provides a powerful way of mapping JSON data into Rust data structures largely automatically. ``` use serde::{Deserialize, Serialize}; use serde_json::Result; #[derive(Serialize, Deserialize)] struct Person { name: String, age: u8, phones: Vec, } fn typed_example() -> Result<()> { // Some JSON input data as a &str. Maybe this comes from the user. let data = r#" { "name": "John Doe", "age": 43, "phones": [ "+44 1234567", "+44 2345678" ] }"#; // Parse the string of data into a Person object. This is exactly the // same function as the one that produced serde_json::Value above, but // now we are asking it for a Person as output. let p: Person = serde_json::from_str(data)?; // Do things just like with any other Rust data structure. println!("Please call {} at the number {}", p.name, p.phones[0]); Ok(()) } # # fn main() { # typed_example().unwrap(); # } ``` This is the same `serde_json::from_str` function as before, but this time we assign the return value to a variable of type `Person` so Serde will automatically interpret the input data as a `Person` and produce informative error messages if the layout does not conform to what a `Person` is expected to look like. Any type that implements Serde's `Deserialize` trait can be deserialized this way. This includes built-in Rust standard library types like `Vec` and `HashMap`, as well as any structs or enums annotated with `#[derive(Deserialize)]`. Once we have `p` of type `Person`, our IDE and the Rust compiler can help us use it correctly like they do for any other Rust code. The IDE can autocomplete field names to prevent typos, which was impossible in the `serde_json::Value` representation. And the Rust compiler can check that when we write `p.phones[0]`, then `p.phones` is guaranteed to be a `Vec` so indexing into it makes sense and produces a `String`. # Constructing JSON values Serde JSON provides a [`json!` macro][macro] to build `serde_json::Value` objects with very natural JSON syntax. ``` use serde_json::json; fn main() { // The type of `john` is `serde_json::Value` let john = json!({ "name": "John Doe", "age": 43, "phones": [ "+44 1234567", "+44 2345678" ] }); println!("first phone number: {}", john["phones"][0]); // Convert to a string of JSON and print it out println!("{}", john.to_string()); } ``` The `Value::to_string()` function converts a `serde_json::Value` into a `String` of JSON text. One neat thing about the `json!` macro is that variables and expressions can be interpolated directly into the JSON value as you are building it. Serde will check at compile time that the value you are interpolating is able to be represented as JSON. ``` # use serde_json::json; # # fn random_phone() -> u16 { 0 } # let full_name = "John Doe"; let age_last_year = 42; // The type of `john` is `serde_json::Value` let john = json!({ "name": full_name, "age": age_last_year + 1, "phones": [ format!("+44 {}", random_phone()) ] }); ``` This is amazingly convenient, but we have the problem we had before with `Value`: the IDE and Rust compiler cannot help us if we get it wrong. Serde JSON provides a better way of serializing strongly-typed data structures into JSON text. # Creating JSON by serializing data structures A data structure can be converted to a JSON string by [`serde_json::to_string`][to_string]. There is also [`serde_json::to_vec`][to_vec] which serializes to a `Vec` and [`serde_json::to_writer`][to_writer] which serializes to any `io::Write` such as a File or a TCP stream. ``` use serde::{Deserialize, Serialize}; use serde_json::Result; #[derive(Serialize, Deserialize)] struct Address { street: String, city: String, } fn print_an_address() -> Result<()> { // Some data structure. let address = Address { street: "10 Downing Street".to_owned(), city: "London".to_owned(), }; // Serialize it to a JSON string. let j = serde_json::to_string(&address)?; // Print, write to a file, or send to an HTTP server. println!("{}", j); Ok(()) } # # fn main() { # print_an_address().unwrap(); # } ``` Any type that implements Serde's `Serialize` trait can be serialized this way. This includes built-in Rust standard library types like `Vec` and `HashMap`, as well as any structs or enums annotated with `#[derive(Serialize)]`. # No-std support As long as there is a memory allocator, it is possible to use serde_json without the rest of the Rust standard library. Disable the default "std" feature and enable the "alloc" feature: ```toml [dependencies] serde_json = { version = "1.0", default-features = false, features = ["alloc"] } ``` For JSON support in Serde without a memory allocator, please see the [`serde-json-core`] crate. [value]: crate::value::Value [from_str]: crate::de::from_str [from_slice]: crate::de::from_slice [from_reader]: crate::de::from_reader [to_string]: crate::ser::to_string [to_vec]: crate::ser::to_vec [to_writer]: crate::ser::to_writer [macro]: crate::json [`serde-json-core`]: https://github.com/rust-embedded-community/serde-json-core ## Modules ## Module `de` Deserialize JSON data to a Rust data structure. ```rust pub mod de { /* ... */ } ``` ### Types #### Struct `Deserializer` A structure that deserializes JSON into Rust values. ```rust pub struct Deserializer { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Methods - ```rust pub fn new(read: R) -> Self { /* ... */ } ``` Create a JSON deserializer from one of the possible serde_json input - ```rust pub fn from_reader(reader: R) -> Self { /* ... */ } ``` Creates a JSON deserializer from an `io::Read`. - ```rust pub fn from_slice(bytes: &''a [u8]) -> Self { /* ... */ } ``` Creates a JSON deserializer from a `&[u8]`. - ```rust pub fn from_str(s: &''a str) -> Self { /* ... */ } ``` Creates a JSON deserializer from a `&str`. - ```rust pub fn end(self: &mut Self) -> Result<()> { /* ... */ } ``` The `Deserializer::end` method should be called after a value has been fully deserialized. - ```rust pub fn into_iter(self: Self) -> StreamDeserializer<''de, R, T> where T: de::Deserialize<''de> { /* ... */ } ``` Turn a JSON deserializer into an iterator over values of type T. - ```rust pub fn disable_recursion_limit(self: &mut Self) { /* ... */ } ``` Parse arbitrarily deep JSON structures without any consideration for ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Deserializer** - ```rust fn deserialize_any(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_bool(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i8(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i16(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i32(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i64(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u8(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u16(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u32(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u64(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_f32(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_f64(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i128(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u128(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_char(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_str(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_string(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_bytes(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` Parses a JSON string as bytes. Note that this function does not check - ```rust fn deserialize_byte_buf(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_option(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` Parses a `null` as a None, and any other values as a `Some(...)`. - ```rust fn deserialize_unit(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_unit_struct(self: Self, _name: &''static str, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_newtype_struct(self: Self, name: &str, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` Parses a newtype struct as the underlying value. - ```rust fn deserialize_seq(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_tuple(self: Self, _len: usize, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_tuple_struct(self: Self, _name: &''static str, _len: usize, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_map(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_struct(self: Self, _name: &''static str, _fields: &''static [&''static str], visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_enum(self: Self, _name: &str, _variants: &''static [&''static str], visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` Parses an enum as an object like `{"$KEY":$VALUE}`, where $VALUE is either a straight - ```rust fn deserialize_identifier(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_ignored_any(self: Self, visitor: V) -> Result<::Value> where V: de::Visitor<''de> { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **RefUnwindSafe** - **Send** - **Sync** - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `StreamDeserializer` Iterator that deserializes a stream into multiple JSON values. A stream deserializer can be created from any JSON deserializer using the `Deserializer::into_iter` method. The data can consist of any JSON value. Values need to be a self-delineating value e.g. arrays, objects, or strings, or be followed by whitespace or a self-delineating value. ``` use serde_json::{Deserializer, Value}; fn main() { let data = "{\"k\": 3}1\"cool\"\"stuff\" 3{} [0, 1, 2]"; let stream = Deserializer::from_str(data).into_iter::(); for value in stream { println!("{}", value.unwrap()); } } ``` ```rust pub struct StreamDeserializer<''de, R, T> { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Methods - ```rust pub fn new(read: R) -> Self { /* ... */ } ``` Create a JSON stream deserializer from one of the possible serde_json - ```rust pub fn byte_offset(self: &Self) -> usize { /* ... */ } ``` Returns the number of bytes so far deserialized into a successful `T`. ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **FusedIterator** - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **IntoIterator** - ```rust fn into_iter(self: Self) -> I { /* ... */ } ``` - **Iterator** - ```rust fn next(self: &mut Self) -> Option> { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **Sync** - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** ### Functions #### Function `from_reader` **Attributes:** - `Other("#[(feature = \"std\")]")` - `Other("#[(docsrs, doc(cfg(feature = \"std\")))]")` - `Other("#[doc(cfg(feature = \"std\"))]")` Deserialize an instance of type `T` from an I/O stream of JSON. The content of the I/O stream is deserialized directly from the stream without being buffered in memory by serde_json. When reading from a source against which short reads are not efficient, such as a [`File`], you will want to apply your own buffering because serde_json will not buffer the input. See [`std::io::BufReader`]. It is expected that the input stream ends after the deserialized object. If the stream does not end, such as in the case of a persistent socket connection, this function will not return. It is possible instead to deserialize from a prefix of an input stream without looking for EOF by managing your own [`Deserializer`]. Note that counter to intuition, this function is usually slower than reading a file completely into memory and then applying [`from_str`] or [`from_slice`] on it. See [issue #160]. [`File`]: std::fs::File [issue #160]: https://github.com/serde-rs/json/issues/160 # Example Reading the contents of a file. ``` use serde::Deserialize; use std::error::Error; use std::fs::File; use std::io::BufReader; use std::path::Path; #[derive(Deserialize, Debug)] struct User { fingerprint: String, location: String, } fn read_user_from_file>(path: P) -> Result> { // Open the file in read-only mode with buffer. let file = File::open(path)?; let reader = BufReader::new(file); // Read the JSON contents of the file as an instance of `User`. let u = serde_json::from_reader(reader)?; // Return the `User`. Ok(u) } fn main() { # } # fn fake_main() { let u = read_user_from_file("test.json").unwrap(); println!("{:#?}", u); } ``` Reading from a persistent socket connection. ``` use serde::Deserialize; use std::error::Error; use std::io::BufReader; use std::net::{TcpListener, TcpStream}; #[derive(Deserialize, Debug)] struct User { fingerprint: String, location: String, } fn read_user_from_stream(stream: &mut BufReader) -> Result> { let mut de = serde_json::Deserializer::from_reader(stream); let u = User::deserialize(&mut de)?; Ok(u) } fn main() { # } # fn fake_main() { let listener = TcpListener::bind("127.0.0.1:4000").unwrap(); for tcp_stream in listener.incoming() { let mut buffered = BufReader::new(tcp_stream.unwrap()); println!("{:#?}", read_user_from_stream(&mut buffered)); } } ``` # Errors This conversion can fail if the structure of the input does not match the structure expected by `T`, for example if `T` is a struct type but the input contains something other than a JSON map. It can also fail if the structure is correct but `T`'s implementation of `Deserialize` decides that something is wrong with the data, for example required struct fields are missing from the JSON map or some number is too big to fit in the expected primitive type. ```rust pub fn from_reader(rdr: R) -> crate::error::Result where R: crate::io::Read, T: de::DeserializeOwned { /* ... */ } ``` #### Function `from_slice` Deserialize an instance of type `T` from bytes of JSON text. # Example ``` use serde::Deserialize; #[derive(Deserialize, Debug)] struct User { fingerprint: String, location: String, } fn main() { // The type of `j` is `&[u8]` let j = b" { \"fingerprint\": \"0xF9BA143B95FF6D82\", \"location\": \"Menlo Park, CA\" }"; let u: User = serde_json::from_slice(j).unwrap(); println!("{:#?}", u); } ``` # Errors This conversion can fail if the structure of the input does not match the structure expected by `T`, for example if `T` is a struct type but the input contains something other than a JSON map. It can also fail if the structure is correct but `T`'s implementation of `Deserialize` decides that something is wrong with the data, for example required struct fields are missing from the JSON map or some number is too big to fit in the expected primitive type. ```rust pub fn from_slice<''a, T>(v: &''a [u8]) -> crate::error::Result where T: de::Deserialize<''a> { /* ... */ } ``` #### Function `from_str` Deserialize an instance of type `T` from a string of JSON text. # Example ``` use serde::Deserialize; #[derive(Deserialize, Debug)] struct User { fingerprint: String, location: String, } fn main() { // The type of `j` is `&str` let j = " { \"fingerprint\": \"0xF9BA143B95FF6D82\", \"location\": \"Menlo Park, CA\" }"; let u: User = serde_json::from_str(j).unwrap(); println!("{:#?}", u); } ``` # Errors This conversion can fail if the structure of the input does not match the structure expected by `T`, for example if `T` is a struct type but the input contains something other than a JSON map. It can also fail if the structure is correct but `T`'s implementation of `Deserialize` decides that something is wrong with the data, for example required struct fields are missing from the JSON map or some number is too big to fit in the expected primitive type. ```rust pub fn from_str<''a, T>(s: &''a str) -> crate::error::Result where T: de::Deserialize<''a> { /* ... */ } ``` ### Re-exports #### Re-export `Read` ```rust pub use crate::read::Read; ``` #### Re-export `SliceRead` ```rust pub use crate::read::SliceRead; ``` #### Re-export `StrRead` ```rust pub use crate::read::StrRead; ``` #### Re-export `IoRead` **Attributes:** - `Other("#[(feature = \"std\")]")` - `Other("#[(docsrs, doc(cfg(feature = \"std\")))]")` - `Other("#[doc(cfg(feature = \"std\"))]")` ```rust pub use crate::read::IoRead; ``` ## Module `error` When serializing or deserializing JSON goes wrong. ```rust pub mod error { /* ... */ } ``` ### Types #### Struct `Error` This type represents all possible errors that can occur when serializing or deserializing JSON data. ```rust pub struct Error { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Methods - ```rust pub fn line(self: &Self) -> usize { /* ... */ } ``` One-based line number at which the error was detected. - ```rust pub fn column(self: &Self) -> usize { /* ... */ } ``` One-based column number at which the error was detected. - ```rust pub fn classify(self: &Self) -> Category { /* ... */ } ``` Categorizes the cause of this error. - ```rust pub fn is_io(self: &Self) -> bool { /* ... */ } ``` Returns true if this error was caused by a failure to read or write - ```rust pub fn is_syntax(self: &Self) -> bool { /* ... */ } ``` Returns true if this error was caused by input that was not - ```rust pub fn is_data(self: &Self) -> bool { /* ... */ } ``` Returns true if this error was caused by input data that was - ```rust pub fn is_eof(self: &Self) -> bool { /* ... */ } ``` Returns true if this error was caused by prematurely reaching the end of - ```rust pub fn io_error_kind(self: &Self) -> Option { /* ... */ } ``` The kind reported by the underlying standard library I/O error, if this ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, f: &mut fmt::Formatter<''_>) -> fmt::Result { /* ... */ } ``` - **Display** - ```rust fn fmt(self: &Self, f: &mut fmt::Formatter<''_>) -> fmt::Result { /* ... */ } ``` - **Error** - ```rust fn source(self: &Self) -> Option<&dyn error::Error + ''static> { /* ... */ } ``` - ```rust fn custom(msg: T) -> Error { /* ... */ } ``` - ```rust fn invalid_type(unexp: de::Unexpected<''_>, exp: &dyn de::Expected) -> Self { /* ... */ } ``` - ```rust fn invalid_value(unexp: de::Unexpected<''_>, exp: &dyn de::Expected) -> Self { /* ... */ } ``` - ```rust fn custom(msg: T) -> Error { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - ```rust fn from(j: Error) -> Self { /* ... */ } ``` Convert a `serde_json::Error` into an `io::Error`. - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **IntoDeserializer** - ```rust fn into_deserializer(self: Self) -> ::Deserializer { /* ... */ } ``` - ```rust fn into_deserializer(self: Self) -> ::Deserializer { /* ... */ } ``` - ```rust fn into_deserializer(self: Self) -> ::Deserializer { /* ... */ } ``` - ```rust fn into_deserializer(self: Self) -> ::Deserializer { /* ... */ } ``` - ```rust fn into_deserializer(self: Self) -> ::Deserializer { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **Sync** - **ToString** - ```rust fn to_string(self: &Self) -> String { /* ... */ } ``` - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Type Alias `Result` Alias for a `Result` with the error type `serde_json::Error`. ```rust pub type Result = result::Result; ``` #### Enum `Category` Categorizes the cause of a `serde_json::Error`. ```rust pub enum Category { Io, Syntax, Data, Eof, } ``` ##### Variants ###### `Io` The error was caused by a failure to read or write bytes on an I/O stream. ###### `Syntax` The error was caused by input that was not syntactically valid JSON. ###### `Data` The 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. ###### `Eof` The 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. ##### Implementations ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Clone** - ```rust fn clone(self: &Self) -> Category { /* ... */ } ``` - **CloneToUninit** - ```rust unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ } ``` - **Copy** - **Debug** - ```rust fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ } ``` - **Eq** - **Equivalent** - ```rust fn equivalent(self: &Self, key: &K) -> bool { /* ... */ } ``` - ```rust fn equivalent(self: &Self, key: &K) -> bool { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **PartialEq** - ```rust fn eq(self: &Self, other: &Category) -> bool { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **StructuralPartialEq** - **Sync** - **ToOwned** - ```rust fn to_owned(self: &Self) -> T { /* ... */ } ``` - ```rust fn clone_into(self: &Self, target: &mut T) { /* ... */ } ``` - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** ## Module `map` A map of String to serde_json::Value. By default the map is backed by a [`BTreeMap`]. Enable the `preserve_order` feature of serde_json to use [`IndexMap`] instead. [`BTreeMap`]: std::collections::BTreeMap [`IndexMap`]: indexmap::IndexMap ```rust pub mod map { /* ... */ } ``` ### Types #### Struct `Map` Represents a JSON key/value type. ```rust pub struct Map { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Methods - ```rust pub fn new() -> Self { /* ... */ } ``` Makes a new empty Map. - ```rust pub fn with_capacity(capacity: usize) -> Self { /* ... */ } ``` Makes a new empty Map with the given initial capacity. - ```rust pub fn clear(self: &mut Self) { /* ... */ } ``` Clears the map, removing all values. - ```rust pub fn get(self: &Self, key: &Q) -> Option<&Value> where String: Borrow, Q: ?Sized + Ord + Eq + Hash { /* ... */ } ``` Returns a reference to the value corresponding to the key. - ```rust pub fn contains_key(self: &Self, key: &Q) -> bool where String: Borrow, Q: ?Sized + Ord + Eq + Hash { /* ... */ } ``` Returns true if the map contains a value for the specified key. - ```rust pub fn get_mut(self: &mut Self, key: &Q) -> Option<&mut Value> where String: Borrow, Q: ?Sized + Ord + Eq + Hash { /* ... */ } ``` Returns a mutable reference to the value corresponding to the key. - ```rust pub fn get_key_value(self: &Self, key: &Q) -> Option<(&String, &Value)> where String: Borrow, Q: ?Sized + Ord + Eq + Hash { /* ... */ } ``` Returns the key-value pair matching the given key. - ```rust pub fn insert(self: &mut Self, k: String, v: Value) -> Option { /* ... */ } ``` Inserts a key-value pair into the map. - ```rust pub fn shift_insert(self: &mut Self, index: usize, k: String, v: Value) -> Option { /* ... */ } ``` Insert a key-value pair in the map at the given index. - ```rust pub fn remove(self: &mut Self, key: &Q) -> Option where String: Borrow, Q: ?Sized + Ord + Eq + Hash { /* ... */ } ``` Removes a key from the map, returning the value at the key if the key - ```rust pub fn remove_entry(self: &mut Self, key: &Q) -> Option<(String, Value)> where String: Borrow, Q: ?Sized + Ord + Eq + Hash { /* ... */ } ``` Removes a key from the map, returning the stored key and value if the - ```rust pub fn swap_remove(self: &mut Self, key: &Q) -> Option where String: Borrow, Q: ?Sized + Ord + Eq + Hash { /* ... */ } ``` Removes and returns the value corresponding to the key from the map. - ```rust pub fn swap_remove_entry(self: &mut Self, key: &Q) -> Option<(String, Value)> where String: Borrow, Q: ?Sized + Ord + Eq + Hash { /* ... */ } ``` Remove and return the key-value pair. - ```rust pub fn shift_remove(self: &mut Self, key: &Q) -> Option where String: Borrow, Q: ?Sized + Ord + Eq + Hash { /* ... */ } ``` Removes and returns the value corresponding to the key from the map. - ```rust pub fn shift_remove_entry(self: &mut Self, key: &Q) -> Option<(String, Value)> where String: Borrow, Q: ?Sized + Ord + Eq + Hash { /* ... */ } ``` Remove and return the key-value pair. - ```rust pub fn append(self: &mut Self, other: &mut Self) { /* ... */ } ``` Moves all elements from other into self, leaving other empty. - ```rust pub fn entry(self: &mut Self, key: S) -> Entry<''_> where S: Into { /* ... */ } ``` Gets the given key's corresponding entry in the map for in-place - ```rust pub fn len(self: &Self) -> usize { /* ... */ } ``` Returns the number of elements in the map. - ```rust pub fn is_empty(self: &Self) -> bool { /* ... */ } ``` Returns true if the map contains no elements. - ```rust pub fn iter(self: &Self) -> Iter<''_> { /* ... */ } ``` Gets an iterator over the entries of the map. - ```rust pub fn iter_mut(self: &mut Self) -> IterMut<''_> { /* ... */ } ``` Gets a mutable iterator over the entries of the map. - ```rust pub fn keys(self: &Self) -> Keys<''_> { /* ... */ } ``` Gets an iterator over the keys of the map. - ```rust pub fn values(self: &Self) -> Values<''_> { /* ... */ } ``` Gets an iterator over the values of the map. - ```rust pub fn values_mut(self: &mut Self) -> ValuesMut<''_> { /* ... */ } ``` Gets an iterator over mutable values of the map. - ```rust pub fn into_values(self: Self) -> IntoValues { /* ... */ } ``` Gets an iterator over the values of the map. - ```rust pub fn retain(self: &mut Self, f: F) where F: FnMut(&String, &mut Value) -> bool { /* ... */ } ``` Retains only the elements specified by the predicate. - ```rust pub fn sort_keys(self: &mut Self) { /* ... */ } ``` Sorts this map's entries in-place using `str`'s usual ordering. ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Clone** - ```rust fn clone(self: &Self) -> Self { /* ... */ } ``` - ```rust fn clone_from(self: &mut Self, source: &Self) { /* ... */ } ``` - **CloneToUninit** - ```rust unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, formatter: &mut fmt::Formatter<''_>) -> Result<(), fmt::Error> { /* ... */ } ``` - **Default** - ```rust fn default() -> Self { /* ... */ } ``` - **Deserialize** - ```rust fn deserialize(deserializer: D) -> Result::Error> where D: de::Deserializer<''de> { /* ... */ } ``` - **DeserializeOwned** - **Deserializer** - ```rust fn deserialize_any(self: Self, visitor: V) -> Result<::Value, ::Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_enum(self: Self, _name: &''static str, _variants: &''static [&''static str], visitor: V) -> Result<::Value, ::Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_ignored_any(self: Self, visitor: V) -> Result<::Value, ::Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_bool(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i8(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i16(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i32(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i64(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i128(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u8(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u16(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u32(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u64(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u128(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_f32(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_f64(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_char(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_str(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_string(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_bytes(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_byte_buf(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_option(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_unit(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_unit_struct(self: Self, name: &''static str, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_newtype_struct(self: Self, name: &''static str, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_seq(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_tuple(self: Self, len: usize, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_tuple_struct(self: Self, name: &''static str, len: usize, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_map(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_struct(self: Self, name: &''static str, fields: &''static [&''static str], visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_identifier(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_any(self: Self, visitor: V) -> Result<::Value, ::Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_enum(self: Self, _name: &''static str, _variants: &''static [&''static str], visitor: V) -> Result<::Value, ::Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_ignored_any(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_bool(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i8(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i16(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i32(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i64(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i128(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u8(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u16(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u32(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u64(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u128(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_f32(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_f64(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_char(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_str(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_string(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_bytes(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_byte_buf(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_option(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_unit(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_unit_struct(self: Self, name: &''static str, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_newtype_struct(self: Self, name: &''static str, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_seq(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_tuple(self: Self, len: usize, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_tuple_struct(self: Self, name: &''static str, len: usize, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_map(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_struct(self: Self, name: &''static str, fields: &''static [&''static str], visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_identifier(self: Self, visitor: V) -> $crate::__private::Result<::Value, >::Error> where V: $crate::de::Visitor<''de> { /* ... */ } ``` - **Eq** - **Equivalent** - ```rust fn equivalent(self: &Self, key: &K) -> bool { /* ... */ } ``` - ```rust fn equivalent(self: &Self, key: &K) -> bool { /* ... */ } ``` - **Extend** - ```rust fn extend(self: &mut Self, iter: T) where T: IntoIterator { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - ```rust fn from(f: Map) -> Self { /* ... */ } ``` Convert map (with string keys) to `Value::Object`. - **FromIterator** - ```rust fn from_iter(iter: T) -> Self where T: IntoIterator { /* ... */ } ``` - **FromStr** - ```rust fn from_str(s: &str) -> Result { /* ... */ } ``` - **Hash** - ```rust fn hash(self: &Self, state: &mut H) { /* ... */ } ``` - **Index** - ```rust fn index(self: &Self, index: &Q) -> &Value { /* ... */ } ``` - **IndexMut** - ```rust fn index_mut(self: &mut Self, index: &Q) -> &mut Value { /* ... */ } ``` - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **IntoDeserializer** - ```rust fn into_deserializer(self: Self) -> ::Deserializer { /* ... */ } ``` - ```rust fn into_deserializer(self: Self) -> ::Deserializer { /* ... */ } ``` - **IntoIterator** - ```rust fn into_iter(self: Self) -> ::IntoIter { /* ... */ } ``` - ```rust fn into_iter(self: Self) -> ::IntoIter { /* ... */ } ``` - ```rust fn into_iter(self: Self) -> ::IntoIter { /* ... */ } ``` - **PartialEq** - ```rust fn eq(self: &Self, other: &Self) -> bool { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **Serialize** - ```rust fn serialize(self: &Self, serializer: S) -> Result<::Ok, ::Error> where S: serde::ser::Serializer { /* ... */ } ``` - **Sync** - **ToOwned** - ```rust fn to_owned(self: &Self) -> T { /* ... */ } ``` - ```rust fn clone_into(self: &Self, target: &mut T) { /* ... */ } ``` - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Enum `Entry` A view into a single entry in a map, which may either be vacant or occupied. This enum is constructed from the [`entry`] method on [`Map`]. [`entry`]: Map::entry ```rust pub enum Entry<''a> { Vacant(VacantEntry<''a>), Occupied(OccupiedEntry<''a>), } ``` ##### Variants ###### `Vacant` A vacant Entry. Fields: | Index | Type | Documentation | |-------|------|---------------| | 0 | `VacantEntry<''a>` | | ###### `Occupied` An occupied Entry. Fields: | Index | Type | Documentation | |-------|------|---------------| | 0 | `OccupiedEntry<''a>` | | ##### Implementations ###### Methods - ```rust pub fn key(self: &Self) -> &String { /* ... */ } ``` Returns a reference to this entry's key. - ```rust pub fn or_insert(self: Self, default: Value) -> &''a mut Value { /* ... */ } ``` Ensures a value is in the entry by inserting the default if empty, and - ```rust pub fn or_insert_with(self: Self, default: F) -> &''a mut Value where F: FnOnce() -> Value { /* ... */ } ``` Ensures a value is in the entry by inserting the result of the default - ```rust pub fn and_modify(self: Self, f: F) -> Self where F: FnOnce(&mut Value) { /* ... */ } ``` Provides in-place mutable access to an occupied entry before any ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **RefUnwindSafe** - **Send** - **Sync** - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `VacantEntry` A vacant Entry. It is part of the [`Entry`] enum. ```rust pub struct VacantEntry<''a> { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Methods - ```rust pub fn key(self: &Self) -> &String { /* ... */ } ``` Gets a reference to the key that would be used when inserting a value - ```rust pub fn insert(self: Self, value: Value) -> &''a mut Value { /* ... */ } ``` Sets the value of the entry with the VacantEntry's key, and returns a ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **RefUnwindSafe** - **Send** - **Sync** - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `OccupiedEntry` An occupied Entry. It is part of the [`Entry`] enum. ```rust pub struct OccupiedEntry<''a> { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Methods - ```rust pub fn key(self: &Self) -> &String { /* ... */ } ``` Gets a reference to the key in the entry. - ```rust pub fn get(self: &Self) -> &Value { /* ... */ } ``` Gets a reference to the value in the entry. - ```rust pub fn get_mut(self: &mut Self) -> &mut Value { /* ... */ } ``` Gets a mutable reference to the value in the entry. - ```rust pub fn into_mut(self: Self) -> &''a mut Value { /* ... */ } ``` Converts the entry into a mutable reference to its value. - ```rust pub fn insert(self: &mut Self, value: Value) -> Value { /* ... */ } ``` Sets the value of the entry with the `OccupiedEntry`'s key, and returns - ```rust pub fn remove(self: Self) -> Value { /* ... */ } ``` Takes the value of the entry out of the map, and returns it. - ```rust pub fn swap_remove(self: Self) -> Value { /* ... */ } ``` Takes the value of the entry out of the map, and returns it. - ```rust pub fn shift_remove(self: Self) -> Value { /* ... */ } ``` Takes the value of the entry out of the map, and returns it. - ```rust pub fn remove_entry(self: Self) -> (String, Value) { /* ... */ } ``` Removes the entry from the map, returning the stored key and value. - ```rust pub fn swap_remove_entry(self: Self) -> (String, Value) { /* ... */ } ``` Removes the entry from the map, returning the stored key and value. - ```rust pub fn shift_remove_entry(self: Self) -> (String, Value) { /* ... */ } ``` Removes the entry from the map, returning the stored key and value. ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **RefUnwindSafe** - **Send** - **Sync** - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `Iter` An iterator over a serde_json::Map's entries. ```rust pub struct Iter<''a> { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Clone** - ```rust fn clone(self: &Self) -> Iter<''a> { /* ... */ } ``` - **CloneToUninit** - ```rust unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ } ``` - **DoubleEndedIterator** - ```rust fn next_back(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - **ExactSizeIterator** - ```rust fn len(self: &Self) -> usize { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **FusedIterator** - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **IntoIterator** - ```rust fn into_iter(self: Self) -> I { /* ... */ } ``` - **Iterator** - ```rust fn next(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - ```rust fn size_hint(self: &Self) -> (usize, Option) { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **Sync** - **ToOwned** - ```rust fn to_owned(self: &Self) -> T { /* ... */ } ``` - ```rust fn clone_into(self: &Self, target: &mut T) { /* ... */ } ``` - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `IterMut` A mutable iterator over a serde_json::Map's entries. ```rust pub struct IterMut<''a> { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ } ``` - **DoubleEndedIterator** - ```rust fn next_back(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - **ExactSizeIterator** - ```rust fn len(self: &Self) -> usize { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **FusedIterator** - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **IntoIterator** - ```rust fn into_iter(self: Self) -> I { /* ... */ } ``` - **Iterator** - ```rust fn next(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - ```rust fn size_hint(self: &Self) -> (usize, Option) { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **Sync** - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `IntoIter` An owning iterator over a serde_json::Map's entries. ```rust pub struct IntoIter { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ } ``` - **DoubleEndedIterator** - ```rust fn next_back(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - **ExactSizeIterator** - ```rust fn len(self: &Self) -> usize { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **FusedIterator** - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **IntoIterator** - ```rust fn into_iter(self: Self) -> I { /* ... */ } ``` - **Iterator** - ```rust fn next(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - ```rust fn size_hint(self: &Self) -> (usize, Option) { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **Sync** - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `Keys` An iterator over a serde_json::Map's keys. ```rust pub struct Keys<''a> { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Clone** - ```rust fn clone(self: &Self) -> Keys<''a> { /* ... */ } ``` - **CloneToUninit** - ```rust unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ } ``` - **DoubleEndedIterator** - ```rust fn next_back(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - **ExactSizeIterator** - ```rust fn len(self: &Self) -> usize { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **FusedIterator** - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **IntoIterator** - ```rust fn into_iter(self: Self) -> I { /* ... */ } ``` - **Iterator** - ```rust fn next(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - ```rust fn size_hint(self: &Self) -> (usize, Option) { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **Sync** - **ToOwned** - ```rust fn to_owned(self: &Self) -> T { /* ... */ } ``` - ```rust fn clone_into(self: &Self, target: &mut T) { /* ... */ } ``` - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `Values` An iterator over a serde_json::Map's values. ```rust pub struct Values<''a> { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Clone** - ```rust fn clone(self: &Self) -> Values<''a> { /* ... */ } ``` - **CloneToUninit** - ```rust unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ } ``` - **DoubleEndedIterator** - ```rust fn next_back(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - **ExactSizeIterator** - ```rust fn len(self: &Self) -> usize { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **FusedIterator** - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **IntoIterator** - ```rust fn into_iter(self: Self) -> I { /* ... */ } ``` - **Iterator** - ```rust fn next(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - ```rust fn size_hint(self: &Self) -> (usize, Option) { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **Sync** - **ToOwned** - ```rust fn to_owned(self: &Self) -> T { /* ... */ } ``` - ```rust fn clone_into(self: &Self, target: &mut T) { /* ... */ } ``` - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `ValuesMut` A mutable iterator over a serde_json::Map's values. ```rust pub struct ValuesMut<''a> { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ } ``` - **DoubleEndedIterator** - ```rust fn next_back(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - **ExactSizeIterator** - ```rust fn len(self: &Self) -> usize { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **FusedIterator** - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **IntoIterator** - ```rust fn into_iter(self: Self) -> I { /* ... */ } ``` - **Iterator** - ```rust fn next(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - ```rust fn size_hint(self: &Self) -> (usize, Option) { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **Sync** - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `IntoValues` An owning iterator over a serde_json::Map's values. ```rust pub struct IntoValues { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ } ``` - **DoubleEndedIterator** - ```rust fn next_back(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - **ExactSizeIterator** - ```rust fn len(self: &Self) -> usize { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **FusedIterator** - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **IntoIterator** - ```rust fn into_iter(self: Self) -> I { /* ... */ } ``` - **Iterator** - ```rust fn next(self: &mut Self) -> Option<::Item> { /* ... */ } ``` - ```rust fn size_hint(self: &Self) -> (usize, Option) { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **Sync** - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** ## Module `ser` **Attributes:** - `Other("#[(feature = \"std\")]")` - `Other("#[(docsrs, doc(cfg(feature = \"std\")))]")` - `Other("#[doc(cfg(feature = \"std\"))]")` Serialize a Rust data structure into JSON data. ```rust pub mod ser { /* ... */ } ``` ### Types #### Struct `Serializer` **Attributes:** - `Other("#[(docsrs, doc(cfg(feature = \"std\")))]")` - `Other("#[doc(cfg(feature = \"std\"))]")` A structure for serializing Rust values into JSON. ```rust pub struct Serializer { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Methods - ```rust pub fn new(writer: W) -> Self { /* ... */ } ``` Creates a new JSON serializer. - ```rust pub fn pretty(writer: W) -> Self { /* ... */ } ``` Creates a new JSON pretty print serializer. - ```rust pub fn with_formatter(writer: W, formatter: F) -> Self { /* ... */ } ``` Creates a new JSON visitor whose output will be written to the writer - ```rust pub fn into_inner(self: Self) -> W { /* ... */ } ``` Unwrap the `Writer` from the `Serializer`. ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **RefUnwindSafe** - **Send** - **Serializer** - ```rust fn serialize_bool(self: Self, value: bool) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_i8(self: Self, value: i8) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_i16(self: Self, value: i16) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_i32(self: Self, value: i32) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_i64(self: Self, value: i64) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_i128(self: Self, value: i128) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_u8(self: Self, value: u8) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_u16(self: Self, value: u16) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_u32(self: Self, value: u32) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_u64(self: Self, value: u64) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_u128(self: Self, value: u128) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_f32(self: Self, value: f32) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_f64(self: Self, value: f64) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_char(self: Self, value: char) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_str(self: Self, value: &str) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_bytes(self: Self, value: &[u8]) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_unit(self: Self) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_unit_struct(self: Self, _name: &''static str) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_unit_variant(self: Self, _name: &''static str, _variant_index: u32, variant: &''static str) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_newtype_struct(self: Self, _name: &''static str, value: &T) -> Result<()> where T: ?Sized + Serialize { /* ... */ } ``` Serialize newtypes without an object wrapper. - ```rust fn serialize_newtype_variant(self: Self, _name: &''static str, _variant_index: u32, variant: &''static str, value: &T) -> Result<()> where T: ?Sized + Serialize { /* ... */ } ``` - ```rust fn serialize_none(self: Self) -> Result<()> { /* ... */ } ``` - ```rust fn serialize_some(self: Self, value: &T) -> Result<()> where T: ?Sized + Serialize { /* ... */ } ``` - ```rust fn serialize_seq(self: Self, len: Option) -> Result<::SerializeSeq> { /* ... */ } ``` - ```rust fn serialize_tuple(self: Self, len: usize) -> Result<::SerializeTuple> { /* ... */ } ``` - ```rust fn serialize_tuple_struct(self: Self, _name: &''static str, len: usize) -> Result<::SerializeTupleStruct> { /* ... */ } ``` - ```rust fn serialize_tuple_variant(self: Self, _name: &''static str, _variant_index: u32, variant: &''static str, len: usize) -> Result<::SerializeTupleVariant> { /* ... */ } ``` - ```rust fn serialize_map(self: Self, len: Option) -> Result<::SerializeMap> { /* ... */ } ``` - ```rust fn serialize_struct(self: Self, name: &''static str, len: usize) -> Result<::SerializeStruct> { /* ... */ } ``` - ```rust fn serialize_struct_variant(self: Self, _name: &''static str, _variant_index: u32, variant: &''static str, len: usize) -> Result<::SerializeStructVariant> { /* ... */ } ``` - ```rust fn collect_str(self: Self, value: &T) -> Result<()> where T: ?Sized + Display { /* ... */ } ``` - **Sync** - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Enum `CharEscape` Represents a character escape code in a type-safe manner. ```rust pub enum CharEscape { Quote, ReverseSolidus, Solidus, Backspace, FormFeed, LineFeed, CarriageReturn, Tab, AsciiControl(u8), } ``` ##### Variants ###### `Quote` An escaped quote `"` ###### `ReverseSolidus` An escaped reverse solidus `\` ###### `Solidus` An escaped solidus `/` ###### `Backspace` An escaped backspace character (usually escaped as `\b`) ###### `FormFeed` An escaped form feed character (usually escaped as `\f`) ###### `LineFeed` An escaped line feed character (usually escaped as `\n`) ###### `CarriageReturn` An escaped carriage return character (usually escaped as `\r`) ###### `Tab` An escaped tab character (usually escaped as `\t`) ###### `AsciiControl` An escaped ASCII plane control character (usually escaped as `\u00XX` where `XX` are two hex characters) Fields: | Index | Type | Documentation | |-------|------|---------------| | 0 | `u8` | | ##### Implementations ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **RefUnwindSafe** - **Send** - **Sync** - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `CompactFormatter` This structure compacts a JSON value with no extra whitespace. ```rust pub struct CompactFormatter; ``` ##### Implementations ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Clone** - ```rust fn clone(self: &Self) -> CompactFormatter { /* ... */ } ``` - **CloneToUninit** - ```rust unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ } ``` - **Default** - ```rust fn default() -> CompactFormatter { /* ... */ } ``` - **Formatter** - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **RefUnwindSafe** - **Send** - **Sync** - **ToOwned** - ```rust fn to_owned(self: &Self) -> T { /* ... */ } ``` - ```rust fn clone_into(self: &Self, target: &mut T) { /* ... */ } ``` - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** #### Struct `PrettyFormatter` This structure pretty prints a JSON value to make it human readable. ```rust pub struct PrettyFormatter<''a> { // Some fields omitted } ``` ##### Fields | Name | Type | Documentation | |------|------|---------------| | *private fields* | ... | *Some fields have been omitted* | ##### Implementations ###### Methods - ```rust pub fn new() -> Self { /* ... */ } ``` Construct a pretty printer formatter that defaults to using two spaces for indentation. - ```rust pub fn with_indent(indent: &''a [u8]) -> Self { /* ... */ } ``` Construct a pretty printer formatter that uses the `indent` string for indentation. ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Clone** - ```rust fn clone(self: &Self) -> PrettyFormatter<''a> { /* ... */ } ``` - **CloneToUninit** - ```rust unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ } ``` - **Default** - ```rust fn default() -> Self { /* ... */ } ``` - **Formatter** - ```rust fn begin_array(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` - ```rust fn end_array(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` - ```rust fn begin_array_value(self: &mut Self, writer: &mut W, first: bool) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` - ```rust fn end_array_value(self: &mut Self, _writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` - ```rust fn begin_object(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` - ```rust fn end_object(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` - ```rust fn begin_object_key(self: &mut Self, writer: &mut W, first: bool) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` - ```rust fn begin_object_value(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` - ```rust fn end_object_value(self: &mut Self, _writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **RefUnwindSafe** - **Send** - **Sync** - **ToOwned** - ```rust fn to_owned(self: &Self) -> T { /* ... */ } ``` - ```rust fn clone_into(self: &Self, target: &mut T) { /* ... */ } ``` - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** ### Traits #### Trait `Formatter` This trait abstracts away serializing the JSON control characters, which allows the user to optionally pretty print the JSON output. ```rust pub trait Formatter { /* Associated items */ } ``` > This trait is not object-safe and cannot be used in dynamic trait objects. ##### Provided Methods - ```rust fn write_null(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes a `null` value to the specified writer. - ```rust fn write_bool(self: &mut Self, writer: &mut W, value: bool) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes a `true` or `false` value to the specified writer. - ```rust fn write_i8(self: &mut Self, writer: &mut W, value: i8) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes an integer value like `-123` to the specified writer. - ```rust fn write_i16(self: &mut Self, writer: &mut W, value: i16) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes an integer value like `-123` to the specified writer. - ```rust fn write_i32(self: &mut Self, writer: &mut W, value: i32) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes an integer value like `-123` to the specified writer. - ```rust fn write_i64(self: &mut Self, writer: &mut W, value: i64) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes an integer value like `-123` to the specified writer. - ```rust fn write_i128(self: &mut Self, writer: &mut W, value: i128) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes an integer value like `-123` to the specified writer. - ```rust fn write_u8(self: &mut Self, writer: &mut W, value: u8) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes an integer value like `123` to the specified writer. - ```rust fn write_u16(self: &mut Self, writer: &mut W, value: u16) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes an integer value like `123` to the specified writer. - ```rust fn write_u32(self: &mut Self, writer: &mut W, value: u32) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes an integer value like `123` to the specified writer. - ```rust fn write_u64(self: &mut Self, writer: &mut W, value: u64) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes an integer value like `123` to the specified writer. - ```rust fn write_u128(self: &mut Self, writer: &mut W, value: u128) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes an integer value like `123` to the specified writer. - ```rust fn write_f32(self: &mut Self, writer: &mut W, value: f32) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes a floating point value like `-31.26e+12` to the specified writer. - ```rust fn write_f64(self: &mut Self, writer: &mut W, value: f64) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes a floating point value like `-31.26e+12` to the specified writer. - ```rust fn write_number_str(self: &mut Self, writer: &mut W, value: &str) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes a number that has already been rendered to a string. - ```rust fn begin_string(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called before each series of `write_string_fragment` and - ```rust fn end_string(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called after each series of `write_string_fragment` and - ```rust fn write_string_fragment(self: &mut Self, writer: &mut W, fragment: &str) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes a string fragment that doesn't need any escaping to the - ```rust fn write_char_escape(self: &mut Self, writer: &mut W, char_escape: CharEscape) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes a character escape code to the specified writer. - ```rust fn write_byte_array(self: &mut Self, writer: &mut W, value: &[u8]) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes the representation of a byte array. Formatters can choose whether - ```rust fn begin_array(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called before every array. Writes a `[` to the specified - ```rust fn end_array(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called after every array. Writes a `]` to the specified - ```rust fn begin_array_value(self: &mut Self, writer: &mut W, first: bool) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called before every array value. Writes a `,` if needed to - ```rust fn end_array_value(self: &mut Self, _writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called after every array value. - ```rust fn begin_object(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called before every object. Writes a `{` to the specified - ```rust fn end_object(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called after every object. Writes a `}` to the specified - ```rust fn begin_object_key(self: &mut Self, writer: &mut W, first: bool) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called before every object key. - ```rust fn end_object_key(self: &mut Self, _writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called after every object key. A `:` should be written to the - ```rust fn begin_object_value(self: &mut Self, writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called before every object value. A `:` should be written to - ```rust fn end_object_value(self: &mut Self, _writer: &mut W) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Called after every object value. - ```rust fn write_raw_fragment(self: &mut Self, writer: &mut W, fragment: &str) -> io::Result<()> where W: ?Sized + io::Write { /* ... */ } ``` Writes a raw JSON fragment that doesn't need any escaping to the ##### Implementations This trait is implemented for the following types: - `CompactFormatter` - `PrettyFormatter<''a>` with <''a> ### Functions #### Function `to_writer` **Attributes:** - `Other("#[(docsrs, doc(cfg(feature = \"std\")))]")` - `Other("#[doc(cfg(feature = \"std\"))]")` - `Other("#[attr = Inline(Hint)]")` Serialize the given data structure as JSON into the I/O stream. Serialization guarantees it only feeds valid UTF-8 sequences to the writer. # Errors Serialization can fail if `T`'s implementation of `Serialize` decides to fail, or if `T` contains a map with non-string keys. ```rust pub fn to_writer(writer: W, value: &T) -> crate::error::Result<()> where W: io::Write, T: ?Sized + Serialize { /* ... */ } ``` #### Function `to_writer_pretty` **Attributes:** - `Other("#[(docsrs, doc(cfg(feature = \"std\")))]")` - `Other("#[doc(cfg(feature = \"std\"))]")` - `Other("#[attr = Inline(Hint)]")` Serialize the given data structure as pretty-printed JSON into the I/O stream. Serialization guarantees it only feeds valid UTF-8 sequences to the writer. # Errors Serialization can fail if `T`'s implementation of `Serialize` decides to fail, or if `T` contains a map with non-string keys. ```rust pub fn to_writer_pretty(writer: W, value: &T) -> crate::error::Result<()> where W: io::Write, T: ?Sized + Serialize { /* ... */ } ``` #### Function `to_vec` **Attributes:** - `Other("#[attr = Inline(Hint)]")` Serialize the given data structure as a JSON byte vector. # Errors Serialization can fail if `T`'s implementation of `Serialize` decides to fail, or if `T` contains a map with non-string keys. ```rust pub fn to_vec(value: &T) -> crate::error::Result> where T: ?Sized + Serialize { /* ... */ } ``` #### Function `to_vec_pretty` **Attributes:** - `Other("#[attr = Inline(Hint)]")` Serialize the given data structure as a pretty-printed JSON byte vector. # Errors Serialization can fail if `T`'s implementation of `Serialize` decides to fail, or if `T` contains a map with non-string keys. ```rust pub fn to_vec_pretty(value: &T) -> crate::error::Result> where T: ?Sized + Serialize { /* ... */ } ``` #### Function `to_string` **Attributes:** - `Other("#[attr = Inline(Hint)]")` Serialize the given data structure as a String of JSON. # Errors Serialization can fail if `T`'s implementation of `Serialize` decides to fail, or if `T` contains a map with non-string keys. ```rust pub fn to_string(value: &T) -> crate::error::Result where T: ?Sized + Serialize { /* ... */ } ``` #### Function `to_string_pretty` **Attributes:** - `Other("#[attr = Inline(Hint)]")` Serialize the given data structure as a pretty-printed String of JSON. # Errors Serialization can fail if `T`'s implementation of `Serialize` decides to fail, or if `T` contains a map with non-string keys. ```rust pub fn to_string_pretty(value: &T) -> crate::error::Result where T: ?Sized + Serialize { /* ... */ } ``` ## Module `value` The Value enum, a loosely typed way of representing any valid JSON value. # Constructing JSON Serde JSON provides a [`json!` macro][macro] to build `serde_json::Value` objects with very natural JSON syntax. ``` use serde_json::json; fn main() { // The type of `john` is `serde_json::Value` let john = json!({ "name": "John Doe", "age": 43, "phones": [ "+44 1234567", "+44 2345678" ] }); println!("first phone number: {}", john["phones"][0]); // Convert to a string of JSON and print it out println!("{}", john.to_string()); } ``` The `Value::to_string()` function converts a `serde_json::Value` into a `String` of JSON text. One neat thing about the `json!` macro is that variables and expressions can be interpolated directly into the JSON value as you are building it. Serde will check at compile time that the value you are interpolating is able to be represented as JSON. ``` # use serde_json::json; # # fn random_phone() -> u16 { 0 } # let full_name = "John Doe"; let age_last_year = 42; // The type of `john` is `serde_json::Value` let john = json!({ "name": full_name, "age": age_last_year + 1, "phones": [ format!("+44 {}", random_phone()) ] }); ``` A string of JSON data can be parsed into a `serde_json::Value` by the [`serde_json::from_str`][from_str] function. There is also [`from_slice`][from_slice] for parsing from a byte slice `&[u8]` and [`from_reader`][from_reader] for parsing from any `io::Read` like a File or a TCP stream. ``` use serde_json::{json, Value, Error}; fn untyped_example() -> Result<(), Error> { // Some JSON input data as a &str. Maybe this comes from the user. let data = r#" { "name": "John Doe", "age": 43, "phones": [ "+44 1234567", "+44 2345678" ] }"#; // Parse the string of data into serde_json::Value. let v: Value = serde_json::from_str(data)?; // Access parts of the data by indexing with square brackets. println!("Please call {} at the number {}", v["name"], v["phones"][0]); Ok(()) } # # untyped_example().unwrap(); ``` [macro]: crate::json [from_str]: crate::de::from_str [from_slice]: crate::de::from_slice [from_reader]: crate::de::from_reader ```rust pub mod value { /* ... */ } ``` ### Types #### Enum `Value` Represents any valid JSON value. See the [`serde_json::value` module documentation](self) for usage examples. ```rust pub enum Value { Null, Bool(bool), Number(Number), String(alloc::string::String), Array(alloc::vec::Vec), Object(Map), } ``` ##### Variants ###### `Null` Represents a JSON null value. ``` # use serde_json::json; # let v = json!(null); ``` ###### `Bool` Represents a JSON boolean. ``` # use serde_json::json; # let v = json!(true); ``` Fields: | Index | Type | Documentation | |-------|------|---------------| | 0 | `bool` | | ###### `Number` Represents a JSON number, whether integer or floating point. ``` # use serde_json::json; # let v = json!(12.5); ``` Fields: | Index | Type | Documentation | |-------|------|---------------| | 0 | `Number` | | ###### `String` Represents a JSON string. ``` # use serde_json::json; # let v = json!("a string"); ``` Fields: | Index | Type | Documentation | |-------|------|---------------| | 0 | `alloc::string::String` | | ###### `Array` Represents a JSON array. ``` # use serde_json::json; # let v = json!(["an", "array"]); ``` Fields: | Index | Type | Documentation | |-------|------|---------------| | 0 | `alloc::vec::Vec` | | ###### `Object` Represents a JSON object. By default the map is backed by a BTreeMap. Enable the `preserve_order` feature of serde_json to use IndexMap instead, which preserves entries in the order they are inserted into the map. In particular, this allows JSON data to be deserialized into a Value and serialized to a string while retaining the order of map keys in the input. ``` # use serde_json::json; # let v = json!({ "an": "object" }); ``` Fields: | Index | Type | Documentation | |-------|------|---------------| | 0 | `Map` | | ##### Implementations ###### Methods - ```rust pub fn get(self: &Self, index: I) -> Option<&Value> { /* ... */ } ``` Index into a JSON array or map. A string index can be used to access a - ```rust pub fn get_mut(self: &mut Self, index: I) -> Option<&mut Value> { /* ... */ } ``` Mutably index into a JSON array or map. A string index can be used to - ```rust pub fn is_object(self: &Self) -> bool { /* ... */ } ``` Returns true if the `Value` is an Object. Returns false otherwise. - ```rust pub fn as_object(self: &Self) -> Option<&Map> { /* ... */ } ``` If the `Value` is an Object, returns the associated Map. Returns None - ```rust pub fn as_object_mut(self: &mut Self) -> Option<&mut Map> { /* ... */ } ``` If the `Value` is an Object, returns the associated mutable Map. - ```rust pub fn is_array(self: &Self) -> bool { /* ... */ } ``` Returns true if the `Value` is an Array. Returns false otherwise. - ```rust pub fn as_array(self: &Self) -> Option<&Vec> { /* ... */ } ``` If the `Value` is an Array, returns the associated vector. Returns None - ```rust pub fn as_array_mut(self: &mut Self) -> Option<&mut Vec> { /* ... */ } ``` If the `Value` is an Array, returns the associated mutable vector. - ```rust pub fn is_string(self: &Self) -> bool { /* ... */ } ``` Returns true if the `Value` is a String. Returns false otherwise. - ```rust pub fn as_str(self: &Self) -> Option<&str> { /* ... */ } ``` If the `Value` is a String, returns the associated str. Returns None - ```rust pub fn is_number(self: &Self) -> bool { /* ... */ } ``` Returns true if the `Value` is a Number. Returns false otherwise. - ```rust pub fn as_number(self: &Self) -> Option<&Number> { /* ... */ } ``` If the `Value` is a Number, returns the associated [`Number`]. Returns - ```rust pub fn is_i64(self: &Self) -> bool { /* ... */ } ``` Returns true if the `Value` is an integer between `i64::MIN` and - ```rust pub fn is_u64(self: &Self) -> bool { /* ... */ } ``` Returns true if the `Value` is an integer between zero and `u64::MAX`. - ```rust pub fn is_f64(self: &Self) -> bool { /* ... */ } ``` Returns true if the `Value` is a number that can be represented by f64. - ```rust pub fn as_i64(self: &Self) -> Option { /* ... */ } ``` If the `Value` is an integer, represent it as i64 if possible. Returns - ```rust pub fn as_u64(self: &Self) -> Option { /* ... */ } ``` If the `Value` is an integer, represent it as u64 if possible. Returns - ```rust pub fn as_f64(self: &Self) -> Option { /* ... */ } ``` If the `Value` is a number, represent it as f64 if possible. Returns - ```rust pub fn is_boolean(self: &Self) -> bool { /* ... */ } ``` Returns true if the `Value` is a Boolean. Returns false otherwise. - ```rust pub fn as_bool(self: &Self) -> Option { /* ... */ } ``` If the `Value` is a Boolean, returns the associated bool. Returns None - ```rust pub fn is_null(self: &Self) -> bool { /* ... */ } ``` Returns true if the `Value` is a Null. Returns false otherwise. - ```rust pub fn as_null(self: &Self) -> Option<()> { /* ... */ } ``` If the `Value` is a Null, returns (). Returns None otherwise. - ```rust pub fn pointer(self: &Self, pointer: &str) -> Option<&Value> { /* ... */ } ``` Looks up a value by a JSON Pointer. - ```rust pub fn pointer_mut(self: &mut Self, pointer: &str) -> Option<&mut Value> { /* ... */ } ``` Looks up a value by a JSON Pointer and returns a mutable reference to - ```rust pub fn take(self: &mut Self) -> Value { /* ... */ } ``` Takes the value out of the `Value`, leaving a `Null` in its place. - ```rust pub fn sort_all_objects(self: &mut Self) { /* ... */ } ``` Reorders the entries of all `Value::Object` nested within this JSON ###### Trait Implementations - **Any** - ```rust fn type_id(self: &Self) -> TypeId { /* ... */ } ``` - **Borrow** - ```rust fn borrow(self: &Self) -> &T { /* ... */ } ``` - **BorrowMut** - ```rust fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ } ``` - **Clone** - ```rust fn clone(self: &Self) -> Value { /* ... */ } ``` - **CloneToUninit** - ```rust unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ } ``` - **Debug** - ```rust fn fmt(self: &Self, formatter: &mut fmt::Formatter<''_>) -> fmt::Result { /* ... */ } ``` - **Default** - ```rust fn default() -> Value { /* ... */ } ``` - ```rust fn default() -> Self { /* ... */ } ``` - **Deserialize** - ```rust fn deserialize(deserializer: D) -> Result::Error> where D: serde::Deserializer<''de> { /* ... */ } ``` - **DeserializeOwned** - **Deserializer** - ```rust fn deserialize_any(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i8(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i16(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i32(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i64(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i128(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u8(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u16(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u32(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u64(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u128(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_f32(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_f64(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_option(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_enum(self: Self, name: &''static str, variants: &''static [&''static str], visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_newtype_struct(self: Self, name: &''static str, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_bool(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_char(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_str(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_string(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_bytes(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_byte_buf(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_unit(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_unit_struct(self: Self, _name: &''static str, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_seq(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_tuple(self: Self, _len: usize, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_tuple_struct(self: Self, _name: &''static str, _len: usize, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_map(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_struct(self: Self, _name: &''static str, _fields: &''static [&''static str], visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_identifier(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_ignored_any(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_any(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i8(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i16(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i32(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i64(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_i128(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u8(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u16(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u32(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u64(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_u128(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_f32(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_f64(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_option(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_enum(self: Self, name: &''static str, variants: &''static [&''static str], visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_newtype_struct(self: Self, name: &''static str, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_bool(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_char(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_str(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_string(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_bytes(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_byte_buf(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_unit(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_unit_struct(self: Self, _name: &''static str, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_seq(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_tuple(self: Self, _len: usize, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_tuple_struct(self: Self, _name: &''static str, _len: usize, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_map(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_struct(self: Self, _name: &''static str, _fields: &''static [&''static str], visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_identifier(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - ```rust fn deserialize_ignored_any(self: Self, visitor: V) -> Result<::Value, Error> where V: Visitor<''de> { /* ... */ } ``` - **Display** - ```rust fn fmt(self: &Self, f: &mut fmt::Formatter<''_>) -> fmt::Result { /* ... */ } ``` Display a JSON value as a string. - **Eq** - **Equivalent** - ```rust fn equivalent(self: &Self, key: &K) -> bool { /* ... */ } ``` - ```rust fn equivalent(self: &Self, key: &K) -> bool { /* ... */ } ``` - **Freeze** - **From** - ```rust fn from(t: T) -> T { /* ... */ } ``` Returns the argument unchanged. - ```rust fn from(n: i8) -> Self { /* ... */ } ``` - ```rust fn from(n: i16) -> Self { /* ... */ } ``` - ```rust fn from(n: i32) -> Self { /* ... */ } ``` - ```rust fn from(n: i64) -> Self { /* ... */ } ``` - ```rust fn from(n: isize) -> Self { /* ... */ } ``` - ```rust fn from(n: u8) -> Self { /* ... */ } ``` - ```rust fn from(n: u16) -> Self { /* ... */ } ``` - ```rust fn from(n: u32) -> Self { /* ... */ } ``` - ```rust fn from(n: u64) -> Self { /* ... */ } ``` - ```rust fn from(n: usize) -> Self { /* ... */ } ``` - ```rust fn from(f: f32) -> Self { /* ... */ } ``` Convert 32-bit floating point number to `Value::Number`, or - ```rust fn from(f: f64) -> Self { /* ... */ } ``` Convert 64-bit floating point number to `Value::Number`, or - ```rust fn from(f: bool) -> Self { /* ... */ } ``` Convert boolean to `Value::Bool`. - ```rust fn from(f: String) -> Self { /* ... */ } ``` Convert `String` to `Value::String`. - ```rust fn from(f: &str) -> Self { /* ... */ } ``` Convert string slice to `Value::String`. - ```rust fn from(f: Cow<''a, str>) -> Self { /* ... */ } ``` Convert copy-on-write string to `Value::String`. - ```rust fn from(f: Number) -> Self { /* ... */ } ``` Convert `Number` to `Value::Number`. - ```rust fn from(f: Map) -> Self { /* ... */ } ``` Convert map (with string keys) to `Value::Object`. - ```rust fn from(f: Vec) -> Self { /* ... */ } ``` Convert a `Vec` to `Value::Array`. - ```rust fn from(array: [T; N]) -> Self { /* ... */ } ``` - ```rust fn from(f: &[T]) -> Self { /* ... */ } ``` Convert a slice to `Value::Array`. - ```rust fn from((): ()) -> Self { /* ... */ } ``` Convert `()` to `Value::Null`. - ```rust fn from(opt: Option) -> Self { /* ... */ } ``` - **FromIterator** - ```rust fn from_iter>(iter: I) -> Self { /* ... */ } ``` Create a `Value::Array` by collecting an iterator of array elements. - ```rust fn from_iter>(iter: I) -> Self { /* ... */ } ``` Create a `Value::Object` by collecting an iterator of key-value pairs. - **FromStr** - ```rust fn from_str(s: &str) -> Result { /* ... */ } ``` - **Hash** - ```rust fn hash<__H: $crate::hash::Hasher>(self: &Self, state: &mut __H) { /* ... */ } ``` - **Index** - ```rust fn index(self: &Self, index: I) -> &Value { /* ... */ } ``` Index into a `serde_json::Value` using the syntax `value[0]` or - **IndexMut** - ```rust fn index_mut(self: &mut Self, index: I) -> &mut Value { /* ... */ } ``` Write into a `serde_json::Value` using the syntax `value[0] = ...` or - **Into** - ```rust fn into(self: Self) -> U { /* ... */ } ``` Calls `U::from(self)`. - **IntoDeserializer** - ```rust fn into_deserializer(self: Self) -> ::Deserializer { /* ... */ } ``` - ```rust fn into_deserializer(self: Self) -> ::Deserializer { /* ... */ } ``` - **PartialEq** - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &str) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &&str) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &String) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i8) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i8) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i8) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i16) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i16) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i16) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i32) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i32) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i32) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i64) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i64) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &i64) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &isize) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &isize) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &isize) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u8) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u8) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u8) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u16) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u16) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u16) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u32) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u32) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u32) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u64) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u64) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &u64) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &usize) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &usize) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &usize) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &f32) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &f32) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &f32) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &f64) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &f64) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &f64) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &bool) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &Value) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &bool) -> bool { /* ... */ } ``` - ```rust fn eq(self: &Self, other: &bool) -> bool { /* ... */ } ``` - **RefUnwindSafe** - **Send** - **Serialize** - ```rust fn serialize(self: &Self, serializer: S) -> result::Result<::Ok, ::Error> where S: ::serde::Serializer { /* ... */ } ``` - **StructuralPartialEq** - **Sync** - **ToOwned** - ```rust fn to_owned(self: &Self) -> T { /* ... */ } ``` - ```rust fn clone_into(self: &Self, target: &mut T) { /* ... */ } ``` - **ToString** - ```rust fn to_string(self: &Self) -> String { /* ... */ } ``` - **TryFrom** - ```rust fn try_from(value: U) -> Result>::Error> { /* ... */ } ``` - **TryInto** - ```rust fn try_into(self: Self) -> Result>::Error> { /* ... */ } ``` - **Unpin** - **UnwindSafe** ### Functions #### Function `to_value` Convert a `T` into `serde_json::Value` which is an enum that can represent any valid JSON data. # Example ``` use serde::Serialize; use serde_json::json; use std::error::Error; #[derive(Serialize)] struct User { fingerprint: String, location: String, } fn compare_json_values() -> Result<(), Box> { let u = User { fingerprint: "0xF9BA143B95FF6D82".to_owned(), location: "Menlo Park, CA".to_owned(), }; // The type of `expected` is `serde_json::Value` let expected = json!({ "fingerprint": "0xF9BA143B95FF6D82", "location": "Menlo Park, CA", }); let v = serde_json::to_value(u).unwrap(); assert_eq!(v, expected); Ok(()) } # # compare_json_values().unwrap(); ``` # Errors This conversion can fail if `T`'s implementation of `Serialize` decides to fail, or if `T` contains a map with non-string keys. ``` use std::collections::BTreeMap; fn main() { // The keys in this map are vectors, not strings. let mut map = BTreeMap::new(); map.insert(vec![32, 64], "x86"); println!("{}", serde_json::to_value(map).unwrap_err()); } ``` ```rust pub fn to_value(value: T) -> Result where T: Serialize { /* ... */ } ``` #### Function `from_value` Interpret a `serde_json::Value` as an instance of type `T`. # Example ``` use serde::Deserialize; use serde_json::json; #[derive(Deserialize, Debug)] struct User { fingerprint: String, location: String, } fn main() { // The type of `j` is `serde_json::Value` let j = json!({ "fingerprint": "0xF9BA143B95FF6D82", "location": "Menlo Park, CA" }); let u: User = serde_json::from_value(j).unwrap(); println!("{:#?}", u); } ``` # Errors This conversion can fail if the structure of the Value does not match the structure expected by `T`, for example if `T` is a struct type but the Value contains something other than a JSON map. It can also fail if the structure is correct but `T`'s implementation of `Deserialize` decides that something is wrong with the data, for example required struct fields are missing from the JSON map or some number is too big to fit in the expected primitive type. ```rust pub fn from_value(value: Value) -> Result where T: DeserializeOwned { /* ... */ } ``` ### Re-exports #### Re-export `Index` ```rust pub use self::index::Index; ``` #### Re-export `Serializer` ```rust pub use self::ser::Serializer; ``` #### Re-export `Map` ```rust pub use crate::map::Map; ``` #### Re-export `Number` ```rust pub use crate::number::Number; ``` #### Re-export `to_raw_value` **Attributes:** - `Other("#[(feature = \"raw_value\")]")` - `Other("#[(docsrs, doc(cfg(feature = \"raw_value\")))]")` - `Other("#[doc(cfg(feature = \"raw_value\"))]")` ```rust pub use crate::raw::to_raw_value; ``` #### Re-export `RawValue` **Attributes:** - `Other("#[(feature = \"raw_value\")]")` - `Other("#[(docsrs, doc(cfg(feature = \"raw_value\")))]")` - `Other("#[doc(cfg(feature = \"raw_value\"))]")` ```rust pub use crate::raw::RawValue; ``` ## Macros ### Macro `json` **Attributes:** - `MacroExport` Construct a `serde_json::Value` from a JSON literal. ``` # use serde_json::json; # let value = json!({ "code": 200, "success": true, "payload": { "features": [ "serde", "json" ], "homepage": null } }); ``` Variables or expressions can be interpolated into the JSON literal. Any type interpolated into an array element or object value must implement Serde's `Serialize` trait, while any type interpolated into a object key must implement `Into`. If the `Serialize` implementation of the interpolated type decides to fail, or if the interpolated type contains a map with non-string keys, the `json!` macro will panic. ``` # use serde_json::json; # let code = 200; let features = vec!["serde", "json"]; let value = json!({ "code": code, "success": code == 200, "payload": { features[0]: features[1] } }); ``` Trailing commas are allowed inside both arrays and objects. ``` # use serde_json::json; # let value = json!([ "notice", "the", "trailing", "comma -->", ]); ``` ```rust pub macro_rules! json { /* macro_rules! json { ($($json:tt)+) => { ... }; } */ } ``` ## Re-exports ### Re-export `from_reader` **Attributes:** - `Other("#[(feature = \"std\")]")` - `Other("#[(docsrs, doc(cfg(feature = \"std\")))]")` - `Other("#[doc(cfg(feature = \"std\"))]")` - `Other("#[doc(inline)]")` ```rust pub use crate::de::from_reader; ``` ### Re-export `from_slice` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::de::from_slice; ``` ### Re-export `from_str` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::de::from_str; ``` ### Re-export `Deserializer` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::de::Deserializer; ``` ### Re-export `StreamDeserializer` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::de::StreamDeserializer; ``` ### Re-export `Error` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::error::Error; ``` ### Re-export `Result` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::error::Result; ``` ### Re-export `to_string` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::ser::to_string; ``` ### Re-export `to_string_pretty` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::ser::to_string_pretty; ``` ### Re-export `to_vec` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::ser::to_vec; ``` ### Re-export `to_vec_pretty` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::ser::to_vec_pretty; ``` ### Re-export `to_writer` **Attributes:** - `Other("#[(feature = \"std\")]")` - `Other("#[(docsrs, doc(cfg(feature = \"std\")))]")` - `Other("#[doc(cfg(feature = \"std\"))]")` - `Other("#[doc(inline)]")` ```rust pub use crate::ser::to_writer; ``` ### Re-export `to_writer_pretty` **Attributes:** - `Other("#[(feature = \"std\")]")` - `Other("#[(docsrs, doc(cfg(feature = \"std\")))]")` - `Other("#[doc(cfg(feature = \"std\"))]")` - `Other("#[doc(inline)]")` ```rust pub use crate::ser::to_writer_pretty; ``` ### Re-export `Serializer` **Attributes:** - `Other("#[(feature = \"std\")]")` - `Other("#[(docsrs, doc(cfg(feature = \"std\")))]")` - `Other("#[doc(cfg(feature = \"std\"))]")` - `Other("#[doc(inline)]")` ```rust pub use crate::ser::Serializer; ``` ### Re-export `from_value` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::value::from_value; ``` ### Re-export `to_value` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::value::to_value; ``` ### Re-export `Map` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::value::Map; ``` ### Re-export `Number` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::value::Number; ``` ### Re-export `Value` **Attributes:** - `Other("#[doc(inline)]")` ```rust pub use crate::value::Value; ```