Receiving JSON in causes compilation error

I am trying to receive a JSON data using (at create_user function) as shown below.

extern crate rocket;

use anyhow::Result;
use rocket::http::Status;
use rocket::serde::json::Json;
use rocket::serde::Deserialize;

pub struct User {
    pub id: String,
    pub name: String,
    pub age: u32,

pub fn create_user(changes: Json<User>) -> Status {

async fn main() -> Result<()> {
    let _rocket = rocket::build()
        .mount("/", routes![create_user])


But the code does not compile with the following error.
According to the documentation, T in Json<T> needs to implement Deserialize, which I have already done by #[derive(Deserialize)].
Is there anything I am missing? Thanks in advance.

   Compiling workspace v0.1.0 (/workspace)
error[E0277]: the trait bound `Json<User>: FromRequest<'_>` is not satisfied
  --> src/
17 | pub fn create_users(changes: Json<User>) -> Status {
   |                              ^^^^ the trait `FromRequest<'_>` is not implemented for `Json<User>`
   = help: the following other types implement trait `FromRequest<'r>`:
             &'r ContentType
             &'r Host<'r>
             &'r Limits
             &'r Route
             &'r rocket::Config
             &'r rocket::State<T>
             &'r rocket::http::Accept
             &'r rocket::http::CookieJar<'r>
           and 8 others

For more information about this error, try `rustc --explain E0277`.

I also put an link to reproduction code on Codesandbox.

You could be missing the data attribute of the #post annotation: Json in rocket::serde::json - Rust



- #[post("/")]
+ #[post("/", format = "json", data="<changes>")]



Oh, how come I missed this important info in the documentation...
Thank you so much for the quick response @mdHMUpeyf8yluPfXI @jofas !!

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.