# actix_web::Json - Rust
API documentation for the Rust `Json` struct in crate `actix_web`.
Keywords: rust, rustlang, rust-lang, Json

# [−] [src] Struct actix_web::Json

    pub struct Json<T>(pub T);

Json helper

Json can be used for two different purpose. First is for json response generation and second is for extracting typed information from request's payload.

To extract typed information from request's body, the type `T` must implement the `Deserialize` trait from serde.

JsonConfig allows to configure extraction process.

## Example

    #[macro_use] extern crate serde_derive;
    use actix_web::{App, Json, Result, http};

    #[derive(Deserialize)]
    struct Info {
        username: String,
    }

    /// deserialize `Info` from request's body
    fn index(info: Json<Info>) -> Result<String> {
        Ok(format!("Welcome {}!", info.username))
    }

    fn main() {
        let app = App::new().resource(
           "/index.html",
           |r| r.method(http::Method::POST).with(index));  // <- use `with` extractor
    }

The `Json` type allows you to respond with well-formed JSON data: simply return a value of type Json<T> where T is the type of a structure to serialize into JSON. The type `T` must implement the `Serialize` trait from serde.

    #[derive(Serialize)]
    struct MyObj {
        name: String,
    }

    fn index(req: HttpRequest) -> Result<Json<MyObj>> {
        Ok(Json(MyObj {
            name: req.match_info().query("name")?,
        }))
    }

## Methods

###

`impl<T> Json<T>`

[src]

####

`pub fn into_inner(self) -> T`

[src]

Deconstruct to an inner value

## Trait Implementations

###

`impl<T: Serialize> Responder for Json<T>`

[src]

#### `type Item = HttpResponse`

The associated item which can be returned.

#### `type Error = Error`

The associated error which can be returned.

####

`fn respond_to<S>(self, req: &HttpRequest<S>) -> Result<HttpResponse, Error>`

[src]

Convert itself to `AsyncResult` or `Error`.

###

`impl<T, S> FromRequest<S> for Json<T> where T: DeserializeOwned + 'static, S: 'static,`

[src]

#### `type Config = JsonConfig<S>`

Configuration for conversion process

#### `type Result = Box<Future<Item = Self, Error = Error>>`

Future that resolves to a Self

####

`fn from_request(req: &HttpRequest<S>, cfg: &Self::Config) -> Self::Result`

[src]

Convert request to a Self

####

`fn extract(req: &HttpRequest<S>) -> Self::Result`

[src]

Convert request to a Self Read more

###

`impl<T> Display for Json<T> where T: Display,`

[src]

####

`fn fmt(&self, f: &mut Formatter) -> Result`

[src]

Formats the value using the given formatter. Read more

###

`impl<T> Debug for Json<T> where T: Debug,`

[src]

####

`fn fmt(&self, f: &mut Formatter) -> Result`

[src]

Formats the value using the given formatter. Read more

###

`impl<T> Deref for Json<T>`

[src]

#### `type Target = T`

The resulting type after dereferencing.

####

`fn deref(&self) -> &T`

[src]

Dereferences the value.

###

`impl<T> DerefMut for Json<T>`

[src]

####

`fn deref_mut(&mut self) -> &mut T`

[src]

Mutably dereferences the value.

## Auto Trait Implementations

###

`impl<T> Send for Json<T> where T: Send,`

###

`impl<T> Sync for Json<T> where T: Sync,`

## Blanket Implementations

###

`impl<T> ToString for T where T: Display + ?Sized,`

[src]

####

`fn to_string(&self) -> String`

[src]

Converts the given value to a `String`. Read more

###

`impl<T> From for T`

[src]

####

`fn from(t: T) -> T`

[src]

Performs the conversion.

###

`impl<T, U> Into for T where U: From<T>,`

[src]

####

`fn into(self) -> U`

[src]

Performs the conversion.

###

`impl<T, U> TryFrom for T where T: From<U>,`

[src]

#### `type Error = !`

🔬 This is a nightly-only experimental API. (`try_from`)

The type returned in the event of a conversion error.

####

`fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>`

[src]

🔬 This is a nightly-only experimental API. (`try_from`)

Performs the conversion.

###

`impl<T> Borrow for T where T: ?Sized,`

[src]

####

`fn borrow(&self) -> &T`

[src]

Immutably borrows from an owned value. Read more

###

`impl<T> BorrowMut for T where T: ?Sized,`

[src]

####

`fn borrow_mut(&mut self) -> &mut T`

[src]

Mutably borrows from an owned value. Read more

###

`impl<T, U> TryInto for T where U: TryFrom<T>,`

[src]

#### `type Error = <U as TryFrom<T>>::Error`

🔬 This is a nightly-only experimental API. (`try_from`)

The type returned in the event of a conversion error.

####

`fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>`

[src]

🔬 This is a nightly-only experimental API. (`try_from`)

Performs the conversion.

###

`impl<T> Any for T where T: 'static + ?Sized,`

[src]

####

`fn get_type_id(&self) -> TypeId`

[src]

🔬 This is a nightly-only experimental API. (`get_type_id`)

this method will likely be replaced by an associated static

Gets the `TypeId` of `self`. Read more

###

`impl<T> Erased for T`

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)