Function rocket::serde::json::from_slice

source ·
pub fn from_slice<'a, T>(slice: &'a [u8]) -> Result<T, Error>
where T: Deserialize<'a>,
Available on crate feature json only.
Expand description

Deserialize an instance of type T from bytes of JSON text.

Always use Json to deserialize JSON request data.

§Example

use rocket::serde::{Deserialize, json};

#[derive(Debug, PartialEq, Deserialize)]
#[serde(crate = "rocket::serde")]
struct Data<'r> {
    framework: &'r str,
    stars: usize,
}

let bytes = br#"
    {
        "framework": "Rocket",
        "stars": 5
    }
"#;

let data: Data = json::from_slice(bytes).unwrap();
assert_eq!(data, Data { framework: "Rocket", stars: 5, });

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