128 KiB
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.
{
"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.
# use serde_json::{Number, Map};
#
# #[allow(dead_code)]
enum Value {
Null,
Bool(bool),
Number(Number),
String(String),
Array(Vec<Value>),
Object(Map<String, Value>),
}
A string of JSON data can be parsed into a serde_json::Value by the
serde_json::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.
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<String>,
}
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<T>
and HashMap<K, V>, 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<String> so indexing into it makes sense and produces a String.
Constructing JSON values
Serde JSON provides a json! 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. There is also
serde_json::to_vec which serializes to a Vec<u8> and
serde_json::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<T> and
HashMap<K, V>, 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:
[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.
Modules
Module de
Deserialize JSON data to a Rust data structure.
pub mod de { /* ... */ }
Types
Struct Deserializer
A structure that deserializes JSON into Rust values.
pub struct Deserializer<R> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Methods
-
pub fn new(read: R) -> Self { /* ... */ }Create a JSON deserializer from one of the possible serde_json input
-
pub fn from_reader(reader: R) -> Self { /* ... */ }Creates a JSON deserializer from an
io::Read. -
pub fn from_slice(bytes: &''a [u8]) -> Self { /* ... */ }Creates a JSON deserializer from a
&[u8]. -
pub fn from_str(s: &''a str) -> Self { /* ... */ }Creates a JSON deserializer from a
&str. -
pub fn end(self: &mut Self) -> Result<()> { /* ... */ }The
Deserializer::endmethod should be called after a value has been fully deserialized. -
pub fn into_iter<T>(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
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Deserializer
-
fn deserialize_any<V>(self: Self, visitor: V) -> Result<<V as >::Value>
-
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_bool<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_i8<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_i16<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_i32<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_i64<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_u8<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_u16<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_u32<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_u64<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_f32<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_f64<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_i128<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_u128<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_char<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_str<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_string<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_bytes<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ``` Parses a JSON string as bytes. Note that this function does not check
-
fn deserialize_byte_buf<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_option<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where
V: de::Visitor<''de> { /* ... */ }
```
Parses a null as a None, and any other values as a Some(...).
-
fn deserialize_unit<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_unit_struct<V>(self: Self, _name: &''static str, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_newtype_struct<V>(self: Self, name: &str, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ``` Parses a newtype struct as the underlying value.
-
fn deserialize_seq<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_tuple<V>(self: Self, _len: usize, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_tuple_struct<V>(self: Self, _name: &''static str, _len: usize, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_map<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_struct<V>(self: Self, _name: &''static str, _fields: &''static [&''static str], visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_enum<V>(self: Self, _name: &str, _variants: &''static [&''static str], visitor: V) -> Result<<V as >::Value>
where
V: de::Visitor<''de> { /* ... */ }
```
Parses an enum as an object like {"$KEY":$VALUE}, where $VALUE is either a straight
-
fn deserialize_identifier<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
fn deserialize_ignored_any<V>(self: Self, visitor: V) -> Result<<V as >::Value>
where V: de::Visitor<''de> { /* ... */ } ```
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::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::<Value>();
for value in stream {
println!("{}", value.unwrap());
}
}
pub struct StreamDeserializer<''de, R, T> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Methods
-
pub fn new(read: R) -> Self { /* ... */ }Create a JSON stream deserializer from one of the possible serde_json
-
pub fn byte_offset(self: &Self) -> usize { /* ... */ }Returns the number of bytes so far deserialized into a successful
T.
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
FusedIterator
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
IntoIterator
-
fn into_iter(self: Self) -> I { /* ... */ }
-
-
Iterator
-
fn next(self: &mut Self) -> Option<Result<T>> { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Functions
Function from_reader
Attributes:
Other("#[<cfg>(feature = \"std\")]")Other("#[<cfg_attr>(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.
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<P: AsRef<Path>>(path: P) -> Result<User, Box<dyn Error>> {
// 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<TcpStream>) -> Result<User, Box<dyn Error>> {
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.
pub fn from_reader<R, T>(rdr: R) -> crate::error::Result<T>
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.
pub fn from_slice<''a, T>(v: &''a [u8]) -> crate::error::Result<T>
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.
pub fn from_str<''a, T>(s: &''a str) -> crate::error::Result<T>
where
T: de::Deserialize<''a> { /* ... */ }
Re-exports
Re-export Read
pub use crate::read::Read;
Re-export SliceRead
pub use crate::read::SliceRead;
Re-export StrRead
pub use crate::read::StrRead;
Re-export IoRead
Attributes:
Other("#[<cfg>(feature = \"std\")]")Other("#[<cfg_attr>(docsrs, doc(cfg(feature = \"std\")))]")Other("#[doc(cfg(feature = \"std\"))]")
pub use crate::read::IoRead;
Module error
When serializing or deserializing JSON goes wrong.
pub mod error { /* ... */ }
Types
Struct Error
This type represents all possible errors that can occur when serializing or deserializing JSON data.
pub struct Error {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Methods
-
pub fn line(self: &Self) -> usize { /* ... */ }One-based line number at which the error was detected.
-
pub fn column(self: &Self) -> usize { /* ... */ }One-based column number at which the error was detected.
-
pub fn classify(self: &Self) -> Category { /* ... */ }Categorizes the cause of this error.
-
pub fn is_io(self: &Self) -> bool { /* ... */ }Returns true if this error was caused by a failure to read or write
-
pub fn is_syntax(self: &Self) -> bool { /* ... */ }Returns true if this error was caused by input that was not
-
pub fn is_data(self: &Self) -> bool { /* ... */ }Returns true if this error was caused by input data that was
-
pub fn is_eof(self: &Self) -> bool { /* ... */ }Returns true if this error was caused by prematurely reaching the end of
-
pub fn io_error_kind(self: &Self) -> Option<ErrorKind> { /* ... */ }The kind reported by the underlying standard library I/O error, if this
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, f: &mut fmt::Formatter<''_>) -> fmt::Result { /* ... */ }
-
-
Display
-
fn fmt(self: &Self, f: &mut fmt::Formatter<''_>) -> fmt::Result { /* ... */ }
-
-
Error
-
fn source(self: &Self) -> Option<&dyn error::Error + ''static> { /* ... */ } -
fn custom<T: Display>(msg: T) -> Error { /* ... */ } -
fn invalid_type(unexp: de::Unexpected<''_>, exp: &dyn de::Expected) -> Self { /* ... */ } -
fn invalid_value(unexp: de::Unexpected<''_>, exp: &dyn de::Expected) -> Self { /* ... */ } -
fn custom<T: Display>(msg: T) -> Error { /* ... */ }
-
-
Freeze
-
From
-
fn from(t: T) -> T { /* ... */ }Returns the argument unchanged.
-
fn from(j: Error) -> Self { /* ... */ }Convert a
serde_json::Errorinto anio::Error.
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
IntoDeserializer
-
fn into_deserializer(self: Self) -> <Self as >::Deserializer { /* ... */ } -
fn into_deserializer(self: Self) -> <Self as >::Deserializer { /* ... */ } -
fn into_deserializer(self: Self) -> <Self as >::Deserializer { /* ... */ } -
fn into_deserializer(self: Self) -> <Self as >::Deserializer { /* ... */ } -
fn into_deserializer(self: Self) -> <Self as >::Deserializer { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
Sync
-
ToString
-
fn to_string(self: &Self) -> String { /* ... */ }
-
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Type Alias Result
Alias for a Result with the error type serde_json::Error.
pub type Result<T> = result::Result<T, Error>;
Enum Category
Categorizes the cause of a serde_json::Error.
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
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Clone
-
fn clone(self: &Self) -> Category { /* ... */ }
-
-
CloneToUninit
-
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ }
-
-
Copy
-
Debug
-
fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ }
-
-
Eq
-
Equivalent
-
fn equivalent(self: &Self, key: &K) -> bool { /* ... */ } -
fn equivalent(self: &Self, key: &K) -> bool { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
PartialEq
-
fn eq(self: &Self, other: &Category) -> bool { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
StructuralPartialEq
-
Sync
-
ToOwned
-
fn to_owned(self: &Self) -> T { /* ... */ } -
fn clone_into(self: &Self, target: &mut T) { /* ... */ }
-
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::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.
pub mod map { /* ... */ }
Types
Struct Map
Represents a JSON key/value type.
pub struct Map<K, V> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Methods
-
pub fn new() -> Self { /* ... */ }Makes a new empty Map.
-
pub fn with_capacity(capacity: usize) -> Self { /* ... */ }Makes a new empty Map with the given initial capacity.
-
pub fn clear(self: &mut Self) { /* ... */ }Clears the map, removing all values.
-
pub fn get<Q>(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<Q>(self: &Self, key: &Q) -> bool
where
String: Borrow<Q>,
Q: ?Sized + Ord + Eq + Hash { /* ... */ }
Returns true if the map contains a value for the specified key.
-
pub fn get_mut<Q>(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<Q>(self: &Self, key: &Q) -> Option<(&String, &Value)>
where
String: Borrow<Q>,
Q: ?Sized + Ord + Eq + Hash { /* ... */ }
Returns the key-value pair matching the given key.
-
pub fn insert(self: &mut Self, k: String, v: Value) -> Option<Value> { /* ... */ }Inserts a key-value pair into the map.
-
pub fn shift_insert(self: &mut Self, index: usize, k: String, v: Value) -> Option<Value> { /* ... */ }Insert a key-value pair in the map at the given index.
-
pub fn remove<Q>(self: &mut Self, key: &Q) -> Option<Value>
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<Q>(self: &mut Self, key: &Q) -> Option<(String, Value)>
where
String: Borrow<Q>,
Q: ?Sized + Ord + Eq + Hash { /* ... */ }
Removes a key from the map, returning the stored key and value if the
-
pub fn swap_remove<Q>(self: &mut Self, key: &Q) -> Option<Value>
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<Q>(self: &mut Self, key: &Q) -> Option<(String, Value)>
where
String: Borrow<Q>,
Q: ?Sized + Ord + Eq + Hash { /* ... */ }
Remove and return the key-value pair.
-
pub fn shift_remove<Q>(self: &mut Self, key: &Q) -> Option<Value>
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<Q>(self: &mut Self, key: &Q) -> Option<(String, Value)>
where
String: Borrow<Q>,
Q: ?Sized + Ord + Eq + Hash { /* ... */ }
Remove and return the key-value pair.
-
pub fn append(self: &mut Self, other: &mut Self) { /* ... */ }Moves all elements from other into self, leaving other empty.
-
pub fn entry<S>(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.
-
pub fn is_empty(self: &Self) -> bool { /* ... */ }Returns true if the map contains no elements.
-
pub fn iter(self: &Self) -> Iter<''_> { /* ... */ }Gets an iterator over the entries of the map.
-
pub fn iter_mut(self: &mut Self) -> IterMut<''_> { /* ... */ }Gets a mutable iterator over the entries of the map.
-
pub fn keys(self: &Self) -> Keys<''_> { /* ... */ }Gets an iterator over the keys of the map.
-
pub fn values(self: &Self) -> Values<''_> { /* ... */ }Gets an iterator over the values of the map.
-
pub fn values_mut(self: &mut Self) -> ValuesMut<''_> { /* ... */ }Gets an iterator over mutable values of the map.
-
pub fn into_values(self: Self) -> IntoValues { /* ... */ }Gets an iterator over the values of the map.
-
pub fn retain<F>(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
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Clone
-
fn clone(self: &Self) -> Self { /* ... */ } -
fn clone_from(self: &mut Self, source: &Self) { /* ... */ }
-
-
CloneToUninit
-
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, formatter: &mut fmt::Formatter<''_>) -> Result<(), fmt::Error> { /* ... */ }
-
-
Default
-
fn default() -> Self { /* ... */ }
-
-
Deserialize
-
fn deserialize<D>(deserializer: D) -> Result<Self, <D as >::Error>
-
where D: de::Deserializer<''de> { /* ... */ } ```
- DeserializeOwned
- Deserializer
-
fn deserialize_any<V>(self: Self, visitor: V) -> Result<<V as >::Value, <Self as >::Error>
-
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_enum<V>(self: Self, _name: &''static str, _variants: &''static [&''static str], visitor: V) -> Result<<V as >::Value, <Self as >::Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_ignored_any<V>(self: Self, visitor: V) -> Result<<V as >::Value, <Self as >::Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_bool<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_i8<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_i16<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_i32<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_i64<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_i128<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_u8<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_u16<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_u32<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_u64<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_u128<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_f32<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_f64<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_char<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_str<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_string<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_bytes<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_byte_buf<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_option<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_unit<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_unit_struct<V>(self: Self, name: &''static str, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_newtype_struct<V>(self: Self, name: &''static str, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_seq<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_tuple<V>(self: Self, len: usize, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_tuple_struct<V>(self: Self, name: &''static str, len: usize, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_map<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_struct<V>(self: Self, name: &''static str, fields: &''static [&''static str], visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_identifier<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_any<V>(self: Self, visitor: V) -> Result<<V as >::Value, <Self as >::Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_enum<V>(self: Self, _name: &''static str, _variants: &''static [&''static str], visitor: V) -> Result<<V as >::Value, <Self as >::Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_ignored_any<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_bool<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_i8<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_i16<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_i32<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_i64<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_i128<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_u8<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_u16<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_u32<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_u64<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_u128<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_f32<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_f64<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_char<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_str<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_string<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_bytes<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_byte_buf<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_option<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_unit<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_unit_struct<V>(self: Self, name: &''static str, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_newtype_struct<V>(self: Self, name: &''static str, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_seq<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_tuple<V>(self: Self, len: usize, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_tuple_struct<V>(self: Self, name: &''static str, len: usize, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_map<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_struct<V>(self: Self, name: &''static str, fields: &''static [&''static str], visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
fn deserialize_identifier<V>(self: Self, visitor: V) -> $crate::__private::Result<<V as >::Value, <Self as $crate::de::Deserializer<''de>>::Error>
where V: $crate:🇩🇪:Visitor<''de> { /* ... */ } ```
-
Eq
-
Equivalent
-
fn equivalent(self: &Self, key: &K) -> bool { /* ... */ } -
fn equivalent(self: &Self, key: &K) -> bool { /* ... */ }
-
-
Extend
-
fn extend<T>(self: &mut Self, iter: T)
-
where T: IntoIterator<Item = (String, Value)> { /* ... */ } ```
-
Freeze
-
From
-
fn from(t: T) -> T { /* ... */ }Returns the argument unchanged.
-
fn from(f: Map<String, Value>) -> Self { /* ... */ }Convert map (with string keys) to
Value::Object.
-
-
FromIterator
-
fn from_iter<T>(iter: T) -> Self
-
where T: IntoIterator<Item = (String, Value)> { /* ... */ } ```
-
FromStr
-
fn from_str(s: &str) -> Result<Self, Error> { /* ... */ }
-
-
Hash
-
fn hash<H: Hasher>(self: &Self, state: &mut H) { /* ... */ }
-
-
Index
-
fn index(self: &Self, index: &Q) -> &Value { /* ... */ }
-
-
IndexMut
-
fn index_mut(self: &mut Self, index: &Q) -> &mut Value { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
IntoDeserializer
-
fn into_deserializer(self: Self) -> <Self as >::Deserializer { /* ... */ } -
fn into_deserializer(self: Self) -> <Self as >::Deserializer { /* ... */ }
-
-
IntoIterator
-
fn into_iter(self: Self) -> <Self as >::IntoIter { /* ... */ } -
fn into_iter(self: Self) -> <Self as >::IntoIter { /* ... */ } -
fn into_iter(self: Self) -> <Self as >::IntoIter { /* ... */ }
-
-
PartialEq
-
fn eq(self: &Self, other: &Self) -> bool { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
Serialize
-
fn serialize<S>(self: &Self, serializer: S) -> Result<<S as >::Ok, <S as >::Error>
-
where S: serde::ser::Serializer { /* ... */ } ```
-
Sync
-
ToOwned
-
fn to_owned(self: &Self) -> T { /* ... */ } -
fn clone_into(self: &Self, target: &mut T) { /* ... */ }
-
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::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].
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
-
pub fn key(self: &Self) -> &String { /* ... */ }Returns a reference to this entry's key.
-
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
-
pub fn or_insert_with<F>(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<F>(self: Self, f: F) -> Self
where
F: FnOnce(&mut Value) { /* ... */ }
Provides in-place mutable access to an occupied entry before any
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct VacantEntry
A vacant Entry. It is part of the Entry enum.
pub struct VacantEntry<''a> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Methods
-
pub fn key(self: &Self) -> &String { /* ... */ }Gets a reference to the key that would be used when inserting a value
-
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
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct OccupiedEntry
An occupied Entry. It is part of the Entry enum.
pub struct OccupiedEntry<''a> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Methods
-
pub fn key(self: &Self) -> &String { /* ... */ }Gets a reference to the key in the entry.
-
pub fn get(self: &Self) -> &Value { /* ... */ }Gets a reference to the value in the entry.
-
pub fn get_mut(self: &mut Self) -> &mut Value { /* ... */ }Gets a mutable reference to the value in the entry.
-
pub fn into_mut(self: Self) -> &''a mut Value { /* ... */ }Converts the entry into a mutable reference to its value.
-
pub fn insert(self: &mut Self, value: Value) -> Value { /* ... */ }Sets the value of the entry with the
OccupiedEntry's key, and returns -
pub fn remove(self: Self) -> Value { /* ... */ }Takes the value of the entry out of the map, and returns it.
-
pub fn swap_remove(self: Self) -> Value { /* ... */ }Takes the value of the entry out of the map, and returns it.
-
pub fn shift_remove(self: Self) -> Value { /* ... */ }Takes the value of the entry out of the map, and returns it.
-
pub fn remove_entry(self: Self) -> (String, Value) { /* ... */ }Removes the entry from the map, returning the stored key and value.
-
pub fn swap_remove_entry(self: Self) -> (String, Value) { /* ... */ }Removes the entry from the map, returning the stored key and value.
-
pub fn shift_remove_entry(self: Self) -> (String, Value) { /* ... */ }Removes the entry from the map, returning the stored key and value.
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct Iter
An iterator over a serde_json::Map's entries.
pub struct Iter<''a> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Clone
-
fn clone(self: &Self) -> Iter<''a> { /* ... */ }
-
-
CloneToUninit
-
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ }
-
-
DoubleEndedIterator
-
fn next_back(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ }
-
-
ExactSizeIterator
-
fn len(self: &Self) -> usize { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
FusedIterator
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
IntoIterator
-
fn into_iter(self: Self) -> I { /* ... */ }
-
-
Iterator
-
fn next(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ } -
fn size_hint(self: &Self) -> (usize, Option<usize>) { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
Sync
-
ToOwned
-
fn to_owned(self: &Self) -> T { /* ... */ } -
fn clone_into(self: &Self, target: &mut T) { /* ... */ }
-
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct IterMut
A mutable iterator over a serde_json::Map's entries.
pub struct IterMut<''a> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ }
-
-
DoubleEndedIterator
-
fn next_back(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ }
-
-
ExactSizeIterator
-
fn len(self: &Self) -> usize { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
FusedIterator
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
IntoIterator
-
fn into_iter(self: Self) -> I { /* ... */ }
-
-
Iterator
-
fn next(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ } -
fn size_hint(self: &Self) -> (usize, Option<usize>) { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct IntoIter
An owning iterator over a serde_json::Map's entries.
pub struct IntoIter {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ }
-
-
DoubleEndedIterator
-
fn next_back(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ }
-
-
ExactSizeIterator
-
fn len(self: &Self) -> usize { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
FusedIterator
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
IntoIterator
-
fn into_iter(self: Self) -> I { /* ... */ }
-
-
Iterator
-
fn next(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ } -
fn size_hint(self: &Self) -> (usize, Option<usize>) { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct Keys
An iterator over a serde_json::Map's keys.
pub struct Keys<''a> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Clone
-
fn clone(self: &Self) -> Keys<''a> { /* ... */ }
-
-
CloneToUninit
-
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ }
-
-
DoubleEndedIterator
-
fn next_back(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ }
-
-
ExactSizeIterator
-
fn len(self: &Self) -> usize { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
FusedIterator
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
IntoIterator
-
fn into_iter(self: Self) -> I { /* ... */ }
-
-
Iterator
-
fn next(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ } -
fn size_hint(self: &Self) -> (usize, Option<usize>) { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
Sync
-
ToOwned
-
fn to_owned(self: &Self) -> T { /* ... */ } -
fn clone_into(self: &Self, target: &mut T) { /* ... */ }
-
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct Values
An iterator over a serde_json::Map's values.
pub struct Values<''a> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Clone
-
fn clone(self: &Self) -> Values<''a> { /* ... */ }
-
-
CloneToUninit
-
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ }
-
-
DoubleEndedIterator
-
fn next_back(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ }
-
-
ExactSizeIterator
-
fn len(self: &Self) -> usize { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
FusedIterator
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
IntoIterator
-
fn into_iter(self: Self) -> I { /* ... */ }
-
-
Iterator
-
fn next(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ } -
fn size_hint(self: &Self) -> (usize, Option<usize>) { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
Sync
-
ToOwned
-
fn to_owned(self: &Self) -> T { /* ... */ } -
fn clone_into(self: &Self, target: &mut T) { /* ... */ }
-
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct ValuesMut
A mutable iterator over a serde_json::Map's values.
pub struct ValuesMut<''a> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ }
-
-
DoubleEndedIterator
-
fn next_back(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ }
-
-
ExactSizeIterator
-
fn len(self: &Self) -> usize { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
FusedIterator
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
IntoIterator
-
fn into_iter(self: Self) -> I { /* ... */ }
-
-
Iterator
-
fn next(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ } -
fn size_hint(self: &Self) -> (usize, Option<usize>) { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct IntoValues
An owning iterator over a serde_json::Map's values.
pub struct IntoValues {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ }
-
-
DoubleEndedIterator
-
fn next_back(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ }
-
-
ExactSizeIterator
-
fn len(self: &Self) -> usize { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
FusedIterator
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
IntoIterator
-
fn into_iter(self: Self) -> I { /* ... */ }
-
-
Iterator
-
fn next(self: &mut Self) -> Option<<Self as >::Item> { /* ... */ } -
fn size_hint(self: &Self) -> (usize, Option<usize>) { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Module ser
Attributes:
Other("#[<cfg>(feature = \"std\")]")Other("#[<cfg_attr>(docsrs, doc(cfg(feature = \"std\")))]")Other("#[doc(cfg(feature = \"std\"))]")
Serialize a Rust data structure into JSON data.
pub mod ser { /* ... */ }
Types
Struct Serializer
Attributes:
Other("#[<cfg_attr>(docsrs, doc(cfg(feature = \"std\")))]")Other("#[doc(cfg(feature = \"std\"))]")
A structure for serializing Rust values into JSON.
pub struct Serializer<W, F = CompactFormatter> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Methods
-
pub fn new(writer: W) -> Self { /* ... */ }Creates a new JSON serializer.
-
pub fn pretty(writer: W) -> Self { /* ... */ }Creates a new JSON pretty print serializer.
-
pub fn with_formatter(writer: W, formatter: F) -> Self { /* ... */ }Creates a new JSON visitor whose output will be written to the writer
-
pub fn into_inner(self: Self) -> W { /* ... */ }Unwrap the
Writerfrom theSerializer.
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
RefUnwindSafe
-
Send
-
Serializer
-
fn serialize_bool(self: Self, value: bool) -> Result<()> { /* ... */ } -
fn serialize_i8(self: Self, value: i8) -> Result<()> { /* ... */ } -
fn serialize_i16(self: Self, value: i16) -> Result<()> { /* ... */ } -
fn serialize_i32(self: Self, value: i32) -> Result<()> { /* ... */ } -
fn serialize_i64(self: Self, value: i64) -> Result<()> { /* ... */ } -
fn serialize_i128(self: Self, value: i128) -> Result<()> { /* ... */ } -
fn serialize_u8(self: Self, value: u8) -> Result<()> { /* ... */ } -
fn serialize_u16(self: Self, value: u16) -> Result<()> { /* ... */ } -
fn serialize_u32(self: Self, value: u32) -> Result<()> { /* ... */ } -
fn serialize_u64(self: Self, value: u64) -> Result<()> { /* ... */ } -
fn serialize_u128(self: Self, value: u128) -> Result<()> { /* ... */ } -
fn serialize_f32(self: Self, value: f32) -> Result<()> { /* ... */ } -
fn serialize_f64(self: Self, value: f64) -> Result<()> { /* ... */ } -
fn serialize_char(self: Self, value: char) -> Result<()> { /* ... */ } -
fn serialize_str(self: Self, value: &str) -> Result<()> { /* ... */ } -
fn serialize_bytes(self: Self, value: &[u8]) -> Result<()> { /* ... */ } -
fn serialize_unit(self: Self) -> Result<()> { /* ... */ } -
fn serialize_unit_struct(self: Self, _name: &''static str) -> Result<()> { /* ... */ } -
fn serialize_unit_variant(self: Self, _name: &''static str, _variant_index: u32, variant: &''static str) -> Result<()> { /* ... */ } -
fn serialize_newtype_struct<T>(self: Self, _name: &''static str, value: &T) -> Result<()>
-
where T: ?Sized + Serialize { /* ... */ } ``` Serialize newtypes without an object wrapper.
-
fn serialize_newtype_variant<T>(self: Self, _name: &''static str, _variant_index: u32, variant: &''static str, value: &T) -> Result<()>
where T: ?Sized + Serialize { /* ... */ } ```
-
fn serialize_none(self: Self) -> Result<()> { /* ... */ } -
fn serialize_some<T>(self: Self, value: &T) -> Result<()>
where T: ?Sized + Serialize { /* ... */ } ```
-
fn serialize_seq(self: Self, len: Option<usize>) -> Result<<Self as >::SerializeSeq> { /* ... */ } -
fn serialize_tuple(self: Self, len: usize) -> Result<<Self as >::SerializeTuple> { /* ... */ } -
fn serialize_tuple_struct(self: Self, _name: &''static str, len: usize) -> Result<<Self as >::SerializeTupleStruct> { /* ... */ } -
fn serialize_tuple_variant(self: Self, _name: &''static str, _variant_index: u32, variant: &''static str, len: usize) -> Result<<Self as >::SerializeTupleVariant> { /* ... */ } -
fn serialize_map(self: Self, len: Option<usize>) -> Result<<Self as >::SerializeMap> { /* ... */ } -
fn serialize_struct(self: Self, name: &''static str, len: usize) -> Result<<Self as >::SerializeStruct> { /* ... */ } -
fn serialize_struct_variant(self: Self, _name: &''static str, _variant_index: u32, variant: &''static str, len: usize) -> Result<<Self as >::SerializeStructVariant> { /* ... */ } -
fn collect_str<T>(self: Self, value: &T) -> Result<()>
where T: ?Sized + Display { /* ... */ } ```
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Enum CharEscape
Represents a character escape code in a type-safe manner.
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
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct CompactFormatter
This structure compacts a JSON value with no extra whitespace.
pub struct CompactFormatter;
Implementations
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Clone
-
fn clone(self: &Self) -> CompactFormatter { /* ... */ }
-
-
CloneToUninit
-
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ }
-
-
Default
-
fn default() -> CompactFormatter { /* ... */ }
-
-
Formatter
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
RefUnwindSafe
-
Send
-
Sync
-
ToOwned
-
fn to_owned(self: &Self) -> T { /* ... */ } -
fn clone_into(self: &Self, target: &mut T) { /* ... */ }
-
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct PrettyFormatter
This structure pretty prints a JSON value to make it human readable.
pub struct PrettyFormatter<''a> {
// Some fields omitted
}
Fields
| Name | Type | Documentation |
|---|---|---|
| private fields | ... | Some fields have been omitted |
Implementations
Methods
-
pub fn new() -> Self { /* ... */ }Construct a pretty printer formatter that defaults to using two spaces for indentation.
-
pub fn with_indent(indent: &''a [u8]) -> Self { /* ... */ }Construct a pretty printer formatter that uses the
indentstring for indentation.
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Clone
-
fn clone(self: &Self) -> PrettyFormatter<''a> { /* ... */ }
-
-
CloneToUninit
-
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<''_>) -> $crate::fmt::Result { /* ... */ }
-
-
Default
-
fn default() -> Self { /* ... */ }
-
-
Formatter
-
fn begin_array<W>(self: &mut Self, writer: &mut W) -> io::Result<()>
-
where W: ?Sized + io::Write { /* ... */ } ```
-
fn end_array<W>(self: &mut Self, writer: &mut W) -> io::Result<()>
where W: ?Sized + io::Write { /* ... */ } ```
-
fn begin_array_value<W>(self: &mut Self, writer: &mut W, first: bool) -> io::Result<()>
where W: ?Sized + io::Write { /* ... */ } ```
-
fn end_array_value<W>(self: &mut Self, _writer: &mut W) -> io::Result<()>
where W: ?Sized + io::Write { /* ... */ } ```
-
fn begin_object<W>(self: &mut Self, writer: &mut W) -> io::Result<()>
where W: ?Sized + io::Write { /* ... */ } ```
-
fn end_object<W>(self: &mut Self, writer: &mut W) -> io::Result<()>
where W: ?Sized + io::Write { /* ... */ } ```
-
fn begin_object_key<W>(self: &mut Self, writer: &mut W, first: bool) -> io::Result<()>
where W: ?Sized + io::Write { /* ... */ } ```
-
fn begin_object_value<W>(self: &mut Self, writer: &mut W) -> io::Result<()>
where W: ?Sized + io::Write { /* ... */ } ```
-
fn end_object_value<W>(self: &mut Self, _writer: &mut W) -> io::Result<()>
where W: ?Sized + io::Write { /* ... */ } ```
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
RefUnwindSafe
-
Send
-
Sync
-
ToOwned
-
fn to_owned(self: &Self) -> T { /* ... */ } -
fn clone_into(self: &Self, target: &mut T) { /* ... */ }
-
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::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.
pub trait Formatter {
/* Associated items */
}
This trait is not object-safe and cannot be used in dynamic trait objects.
Provided Methods
-
fn write_null<W>(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<W>(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.
-
fn write_i8<W>(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<W>(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.
-
fn write_i32<W>(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<W>(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.
-
fn write_i128<W>(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<W>(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.
-
fn write_u16<W>(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<W>(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.
-
fn write_u64<W>(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<W>(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.
-
fn write_f32<W>(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<W>(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.
-
fn write_number_str<W>(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<W>(self: &mut Self, writer: &mut W) -> io::Result<()>
where
W: ?Sized + io::Write { /* ... */ }
Called before each series of write_string_fragment and
-
fn end_string<W>(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<W>(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
-
fn write_char_escape<W>(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<W>(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
-
fn begin_array<W>(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<W>(self: &mut Self, writer: &mut W) -> io::Result<()>
where
W: ?Sized + io::Write { /* ... */ }
Called after every array. Writes a ] to the specified
-
fn begin_array_value<W>(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<W>(self: &mut Self, _writer: &mut W) -> io::Result<()>
where
W: ?Sized + io::Write { /* ... */ }
Called after every array value.
-
fn begin_object<W>(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<W>(self: &mut Self, writer: &mut W) -> io::Result<()>
where
W: ?Sized + io::Write { /* ... */ }
Called after every object. Writes a } to the specified
-
fn begin_object_key<W>(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<W>(self: &mut Self, _writer: &mut W) -> io::Result<()>
where
W: ?Sized + io::Write { /* ... */ }
Called after every object key. A : should be written to the
-
fn begin_object_value<W>(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<W>(self: &mut Self, _writer: &mut W) -> io::Result<()>
where
W: ?Sized + io::Write { /* ... */ }
Called after every object value.
-
fn write_raw_fragment<W>(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("#[<cfg_attr>(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<W, T>(writer: W, value: &T) -> crate::error::Result<()>
where
W: io::Write,
T: ?Sized + Serialize { /* ... */ }
Function to_writer_pretty
Attributes:
Other("#[<cfg_attr>(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.
pub fn to_writer_pretty<W, T>(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.
pub fn to_vec<T>(value: &T) -> crate::error::Result<alloc::vec::Vec<u8>>
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.
pub fn to_vec_pretty<T>(value: &T) -> crate::error::Result<alloc::vec::Vec<u8>>
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.
pub fn to_string<T>(value: &T) -> crate::error::Result<alloc::string::String>
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.
pub fn to_string_pretty<T>(value: &T) -> crate::error::Result<alloc::string::String>
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 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 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::{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();
pub mod value { /* ... */ }
Types
Enum Value
Represents any valid JSON value.
See the serde_json::value module documentation for usage examples.
pub enum Value {
Null,
Bool(bool),
Number(Number),
String(alloc::string::String),
Array(alloc::vec::Vec<Value>),
Object(Map<alloc::string::String, Value>),
}
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<Value> |
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<alloc::string::String, Value> |
Implementations
Methods
-
pub fn get<I: Index>(self: &Self, index: I) -> Option<&Value> { /* ... */ }Index into a JSON array or map. A string index can be used to access a
-
pub fn get_mut<I: Index>(self: &mut Self, index: I) -> Option<&mut Value> { /* ... */ }Mutably index into a JSON array or map. A string index can be used to
-
pub fn is_object(self: &Self) -> bool { /* ... */ }Returns true if the
Valueis an Object. Returns false otherwise. -
pub fn as_object(self: &Self) -> Option<&Map<String, Value>> { /* ... */ }If the
Valueis an Object, returns the associated Map. Returns None -
pub fn as_object_mut(self: &mut Self) -> Option<&mut Map<String, Value>> { /* ... */ }If the
Valueis an Object, returns the associated mutable Map. -
pub fn is_array(self: &Self) -> bool { /* ... */ }Returns true if the
Valueis an Array. Returns false otherwise. -
pub fn as_array(self: &Self) -> Option<&Vec<Value>> { /* ... */ }If the
Valueis an Array, returns the associated vector. Returns None -
pub fn as_array_mut(self: &mut Self) -> Option<&mut Vec<Value>> { /* ... */ }If the
Valueis an Array, returns the associated mutable vector. -
pub fn is_string(self: &Self) -> bool { /* ... */ }Returns true if the
Valueis a String. Returns false otherwise. -
pub fn as_str(self: &Self) -> Option<&str> { /* ... */ }If the
Valueis a String, returns the associated str. Returns None -
pub fn is_number(self: &Self) -> bool { /* ... */ }Returns true if the
Valueis a Number. Returns false otherwise. -
pub fn as_number(self: &Self) -> Option<&Number> { /* ... */ }If the
Valueis a Number, returns the associated [Number]. Returns -
pub fn is_i64(self: &Self) -> bool { /* ... */ }Returns true if the
Valueis an integer betweeni64::MINand -
pub fn is_u64(self: &Self) -> bool { /* ... */ }Returns true if the
Valueis an integer between zero andu64::MAX. -
pub fn is_f64(self: &Self) -> bool { /* ... */ }Returns true if the
Valueis a number that can be represented by f64. -
pub fn as_i64(self: &Self) -> Option<i64> { /* ... */ }If the
Valueis an integer, represent it as i64 if possible. Returns -
pub fn as_u64(self: &Self) -> Option<u64> { /* ... */ }If the
Valueis an integer, represent it as u64 if possible. Returns -
pub fn as_f64(self: &Self) -> Option<f64> { /* ... */ }If the
Valueis a number, represent it as f64 if possible. Returns -
pub fn is_boolean(self: &Self) -> bool { /* ... */ }Returns true if the
Valueis a Boolean. Returns false otherwise. -
pub fn as_bool(self: &Self) -> Option<bool> { /* ... */ }If the
Valueis a Boolean, returns the associated bool. Returns None -
pub fn is_null(self: &Self) -> bool { /* ... */ }Returns true if the
Valueis a Null. Returns false otherwise. -
pub fn as_null(self: &Self) -> Option<()> { /* ... */ }If the
Valueis a Null, returns (). Returns None otherwise. -
pub fn pointer(self: &Self, pointer: &str) -> Option<&Value> { /* ... */ }Looks up a value by a JSON Pointer.
-
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
-
pub fn take(self: &mut Self) -> Value { /* ... */ }Takes the value out of the
Value, leaving aNullin its place. -
pub fn sort_all_objects(self: &mut Self) { /* ... */ }Reorders the entries of all
Value::Objectnested within this JSON
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Clone
-
fn clone(self: &Self) -> Value { /* ... */ }
-
-
CloneToUninit
-
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8) { /* ... */ }
-
-
Debug
-
fn fmt(self: &Self, formatter: &mut fmt::Formatter<''_>) -> fmt::Result { /* ... */ }
-
-
Default
-
fn default() -> Value { /* ... */ } -
fn default() -> Self { /* ... */ }
-
-
Deserialize
-
fn deserialize<D>(deserializer: D) -> Result<Value, <D as >::Error>
-
where D: serde::Deserializer<''de> { /* ... */ } ```
- DeserializeOwned
- Deserializer
-
fn deserialize_any<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
-
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_i8<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_i16<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_i32<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_i64<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_i128<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_u8<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_u16<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_u32<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_u64<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_u128<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_f32<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_f64<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_option<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_enum<V>(self: Self, name: &''static str, variants: &''static [&''static str], visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_newtype_struct<V>(self: Self, name: &''static str, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_bool<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_char<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_str<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_string<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_bytes<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_byte_buf<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_unit<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_unit_struct<V>(self: Self, _name: &''static str, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_seq<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_tuple<V>(self: Self, _len: usize, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_tuple_struct<V>(self: Self, _name: &''static str, _len: usize, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_map<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_struct<V>(self: Self, _name: &''static str, _fields: &''static [&''static str], visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_identifier<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_ignored_any<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_any<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_i8<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_i16<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_i32<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_i64<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_i128<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_u8<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_u16<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_u32<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_u64<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_u128<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_f32<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_f64<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_option<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_enum<V>(self: Self, name: &''static str, variants: &''static [&''static str], visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_newtype_struct<V>(self: Self, name: &''static str, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_bool<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_char<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_str<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_string<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_bytes<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_byte_buf<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_unit<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_unit_struct<V>(self: Self, _name: &''static str, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_seq<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_tuple<V>(self: Self, _len: usize, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_tuple_struct<V>(self: Self, _name: &''static str, _len: usize, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_map<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_struct<V>(self: Self, _name: &''static str, _fields: &''static [&''static str], visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_identifier<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
fn deserialize_ignored_any<V>(self: Self, visitor: V) -> Result<<V as >::Value, Error>
where V: Visitor<''de> { /* ... */ } ```
-
Display
-
Display a JSON value as a string.
fn fmt(self: &Self, f: &mut fmt::Formatter<''_>) -> fmt::Result { /* ... */ }
-
-
Eq
-
Equivalent
-
fn equivalent(self: &Self, key: &K) -> bool { /* ... */ } -
fn equivalent(self: &Self, key: &K) -> bool { /* ... */ }
-
-
Freeze
-
From
-
fn from(t: T) -> T { /* ... */ }Returns the argument unchanged.
-
fn from(n: i8) -> Self { /* ... */ } -
fn from(n: i16) -> Self { /* ... */ } -
fn from(n: i32) -> Self { /* ... */ } -
fn from(n: i64) -> Self { /* ... */ } -
fn from(n: isize) -> Self { /* ... */ } -
fn from(n: u8) -> Self { /* ... */ } -
fn from(n: u16) -> Self { /* ... */ } -
fn from(n: u32) -> Self { /* ... */ } -
fn from(n: u64) -> Self { /* ... */ } -
fn from(n: usize) -> Self { /* ... */ } -
fn from(f: f32) -> Self { /* ... */ }Convert 32-bit floating point number to
Value::Number, or -
fn from(f: f64) -> Self { /* ... */ }Convert 64-bit floating point number to
Value::Number, or -
fn from(f: bool) -> Self { /* ... */ }Convert boolean to
Value::Bool. -
fn from(f: String) -> Self { /* ... */ }Convert
StringtoValue::String. -
fn from(f: &str) -> Self { /* ... */ }Convert string slice to
Value::String. -
fn from(f: Cow<''a, str>) -> Self { /* ... */ }Convert copy-on-write string to
Value::String. -
fn from(f: Number) -> Self { /* ... */ }Convert
NumbertoValue::Number. -
fn from(f: Map<String, Value>) -> Self { /* ... */ }Convert map (with string keys) to
Value::Object. -
fn from(f: Vec<T>) -> Self { /* ... */ }Convert a
VectoValue::Array. -
fn from(array: [T; N]) -> Self { /* ... */ } -
fn from(f: &[T]) -> Self { /* ... */ }Convert a slice to
Value::Array. -
fn from((): ()) -> Self { /* ... */ }Convert
()toValue::Null. -
fn from(opt: Option<T>) -> Self { /* ... */ }
-
-
FromIterator
-
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self { /* ... */ }Create a
Value::Arrayby collecting an iterator of array elements. -
fn from_iter<I: IntoIterator<Item = (K, V)>>(iter: I) -> Self { /* ... */ }Create a
Value::Objectby collecting an iterator of key-value pairs.
-
-
FromStr
-
fn from_str(s: &str) -> Result<Value, Error> { /* ... */ }
-
-
Hash
-
fn hash<__H: $crate::hash::Hasher>(self: &Self, state: &mut __H) { /* ... */ }
-
-
Index
-
Index into a
fn index(self: &Self, index: I) -> &Value { /* ... */ }serde_json::Valueusing the syntaxvalue[0]or
-
-
IndexMut
-
Write into a
fn index_mut(self: &mut Self, index: I) -> &mut Value { /* ... */ }serde_json::Valueusing the syntaxvalue[0] = ...or
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
IntoDeserializer
-
fn into_deserializer(self: Self) -> <Self as >::Deserializer { /* ... */ } -
fn into_deserializer(self: Self) -> <Self as >::Deserializer { /* ... */ }
-
-
PartialEq
-
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &str) -> bool { /* ... */ } -
fn eq(self: &Self, other: &&str) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &String) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i8) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i8) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i8) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i16) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i16) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i16) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i32) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i32) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i32) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i64) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i64) -> bool { /* ... */ } -
fn eq(self: &Self, other: &i64) -> bool { /* ... */ } -
fn eq(self: &Self, other: &isize) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &isize) -> bool { /* ... */ } -
fn eq(self: &Self, other: &isize) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u8) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u8) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u8) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u16) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u16) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u16) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u32) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u32) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u32) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u64) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u64) -> bool { /* ... */ } -
fn eq(self: &Self, other: &u64) -> bool { /* ... */ } -
fn eq(self: &Self, other: &usize) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &usize) -> bool { /* ... */ } -
fn eq(self: &Self, other: &usize) -> bool { /* ... */ } -
fn eq(self: &Self, other: &f32) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &f32) -> bool { /* ... */ } -
fn eq(self: &Self, other: &f32) -> bool { /* ... */ } -
fn eq(self: &Self, other: &f64) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &f64) -> bool { /* ... */ } -
fn eq(self: &Self, other: &f64) -> bool { /* ... */ } -
fn eq(self: &Self, other: &bool) -> bool { /* ... */ } -
fn eq(self: &Self, other: &Value) -> bool { /* ... */ } -
fn eq(self: &Self, other: &bool) -> bool { /* ... */ } -
fn eq(self: &Self, other: &bool) -> bool { /* ... */ }
-
-
RefUnwindSafe
-
Send
-
Serialize
-
fn serialize<S>(self: &Self, serializer: S) -> result::Result<<S as >::Ok, <S as >::Error>
-
where S: ::serde::Serializer { /* ... */ } ```
-
StructuralPartialEq
-
Sync
-
ToOwned
-
fn to_owned(self: &Self) -> T { /* ... */ } -
fn clone_into(self: &Self, target: &mut T) { /* ... */ }
-
-
ToString
-
fn to_string(self: &Self) -> String { /* ... */ }
-
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::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<dyn Error>> {
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());
}
pub fn to_value<T>(value: T) -> Result<Value, crate::error::Error>
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.
pub fn from_value<T>(value: Value) -> Result<T, crate::error::Error>
where
T: DeserializeOwned { /* ... */ }
Re-exports
Re-export Index
pub use self::index::Index;
Re-export Serializer
pub use self::ser::Serializer;
Re-export Map
pub use crate::map::Map;
Re-export Number
pub use crate::number::Number;
Re-export to_raw_value
Attributes:
Other("#[<cfg>(feature = \"raw_value\")]")Other("#[<cfg_attr>(docsrs, doc(cfg(feature = \"raw_value\")))]")Other("#[doc(cfg(feature = \"raw_value\"))]")
pub use crate::raw::to_raw_value;
Re-export RawValue
Attributes:
Other("#[<cfg>(feature = \"raw_value\")]")Other("#[<cfg_attr>(docsrs, doc(cfg(feature = \"raw_value\")))]")Other("#[doc(cfg(feature = \"raw_value\"))]")
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<String>. 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 -->",
]);
pub macro_rules! json {
/* macro_rules! json {
($($json:tt)+) => { ... };
} */
}
Re-exports
Re-export from_reader
Attributes:
Other("#[<cfg>(feature = \"std\")]")Other("#[<cfg_attr>(docsrs, doc(cfg(feature = \"std\")))]")Other("#[doc(cfg(feature = \"std\"))]")Other("#[doc(inline)]")
pub use crate::de::from_reader;
Re-export from_slice
Attributes:
Other("#[doc(inline)]")
pub use crate::de::from_slice;
Re-export from_str
Attributes:
Other("#[doc(inline)]")
pub use crate::de::from_str;
Re-export Deserializer
Attributes:
Other("#[doc(inline)]")
pub use crate::de::Deserializer;
Re-export StreamDeserializer
Attributes:
Other("#[doc(inline)]")
pub use crate::de::StreamDeserializer;
Re-export Error
Attributes:
Other("#[doc(inline)]")
pub use crate::error::Error;
Re-export Result
Attributes:
Other("#[doc(inline)]")
pub use crate::error::Result;
Re-export to_string
Attributes:
Other("#[doc(inline)]")
pub use crate::ser::to_string;
Re-export to_string_pretty
Attributes:
Other("#[doc(inline)]")
pub use crate::ser::to_string_pretty;
Re-export to_vec
Attributes:
Other("#[doc(inline)]")
pub use crate::ser::to_vec;
Re-export to_vec_pretty
Attributes:
Other("#[doc(inline)]")
pub use crate::ser::to_vec_pretty;
Re-export to_writer
Attributes:
Other("#[<cfg>(feature = \"std\")]")Other("#[<cfg_attr>(docsrs, doc(cfg(feature = \"std\")))]")Other("#[doc(cfg(feature = \"std\"))]")Other("#[doc(inline)]")
pub use crate::ser::to_writer;
Re-export to_writer_pretty
Attributes:
Other("#[<cfg>(feature = \"std\")]")Other("#[<cfg_attr>(docsrs, doc(cfg(feature = \"std\")))]")Other("#[doc(cfg(feature = \"std\"))]")Other("#[doc(inline)]")
pub use crate::ser::to_writer_pretty;
Re-export Serializer
Attributes:
Other("#[<cfg>(feature = \"std\")]")Other("#[<cfg_attr>(docsrs, doc(cfg(feature = \"std\")))]")Other("#[doc(cfg(feature = \"std\"))]")Other("#[doc(inline)]")
pub use crate::ser::Serializer;
Re-export from_value
Attributes:
Other("#[doc(inline)]")
pub use crate::value::from_value;
Re-export to_value
Attributes:
Other("#[doc(inline)]")
pub use crate::value::to_value;
Re-export Map
Attributes:
Other("#[doc(inline)]")
pub use crate::value::Map;
Re-export Number
Attributes:
Other("#[doc(inline)]")
pub use crate::value::Number;
Re-export Value
Attributes:
Other("#[doc(inline)]")
pub use crate::value::Value;