pub struct Json<T>(pub T);
Expand description
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 JsonT
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")?,
}))
}
Tuple Fields
0: T
Implementations
sourceimpl<T> Json<T>
impl<T> Json<T>
sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Deconstruct to an inner value
Trait Implementations
sourceimpl<T, S> FromRequest<S> for Json<T>where
T: DeserializeOwned + 'static,
S: 'static,
impl<T, S> FromRequest<S> for Json<T>where
T: DeserializeOwned + 'static,
S: 'static,
type Config = JsonConfig<S>
type Config = JsonConfig<S>
Configuration for conversion process
type Result = Box<dyn Future<Error = Error, Item = Json<T>> + 'static, Global>
type Result = Box<dyn Future<Error = Error, Item = Json<T>> + 'static, Global>
Future that resolves to a Self
sourcefn from_request(req: &HttpRequest<S>, cfg: &Self::Config) -> Self::Result
fn from_request(req: &HttpRequest<S>, cfg: &Self::Config) -> Self::Result
Convert request to a Self
sourcefn extract(req: &HttpRequest<S>) -> Self::Result
fn extract(req: &HttpRequest<S>) -> Self::Result
Convert request to a Self Read more
sourceimpl<T: Serialize> Responder for Json<T>
impl<T: Serialize> Responder for Json<T>
type Item = HttpResponse
type Item = HttpResponse
The associated item which can be returned.
sourcefn respond_to<S>(self, req: &HttpRequest<S>) -> Result<HttpResponse, Error>
fn respond_to<S>(self, req: &HttpRequest<S>) -> Result<HttpResponse, Error>
Convert itself to
AsyncResult
or Error
.Auto Trait Implementations
impl<T> RefUnwindSafe for Json<T>where
T: RefUnwindSafe,
impl<T> Send for Json<T>where
T: Send,
impl<T> Sync for Json<T>where
T: Sync,
impl<T> Unpin for Json<T>where
T: Unpin,
impl<T> UnwindSafe for Json<T>where
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more