如何从 Rust (Rocket) HTTP 端点 return JSON?
How can I return JSON from a Rust (Rocket) HTTP endpoint?
通过 Rust 中的 Rocket return Json 最简单的方法是什么?
#[post("/route", data = "<data>")]
fn route(someVariable: String) -> String {
// How can I return a json response here? {"a": "{someVariable}")
}
我试过:content::Json()
但对我来说它似乎太静态了。
如果您发现 content::Json()
过于静态,您可以使用 rocket_contrib
包。使用这个包将允许你从 serde 包
中传递一个实现 Deserialize
的结构
use rocket_contrib::json::Json;
use serde::Deserialize;
#[derive(Deserialize)]
struct User {
name: String,
age: u8,
alive: bool,
}
#[post("/route", data = "<data>")]
fn route(someVariable: String) -> String {
let user = User {
name: "Jon Snow".to_string(),
age: 21,
alive: true,
};
Json(user_from_id)
}
确保将依赖项添加到 Cargo.toml
serde = { version = "1.0", features = ["derive"] }
rocket_contrib = 0.4
有关 rocket_contrib https://api.rocket.rs/v0.4/rocket_contrib/json/struct.Json.html
的更多信息
最简单的方法就是使用 serde_json:
serde_json::to_string(&MyStructObject);
serde_json::to_string 将 return 一个 Result< String >,其中字符串是 json 字符串。最后,在您的 Cargo.toml 中,您需要具备以下内容:
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
通过 Rust 中的 Rocket return Json 最简单的方法是什么?
#[post("/route", data = "<data>")]
fn route(someVariable: String) -> String {
// How can I return a json response here? {"a": "{someVariable}")
}
我试过:content::Json()
但对我来说它似乎太静态了。
如果您发现 content::Json()
过于静态,您可以使用 rocket_contrib
包。使用这个包将允许你从 serde 包
Deserialize
的结构
use rocket_contrib::json::Json;
use serde::Deserialize;
#[derive(Deserialize)]
struct User {
name: String,
age: u8,
alive: bool,
}
#[post("/route", data = "<data>")]
fn route(someVariable: String) -> String {
let user = User {
name: "Jon Snow".to_string(),
age: 21,
alive: true,
};
Json(user_from_id)
}
确保将依赖项添加到 Cargo.toml
serde = { version = "1.0", features = ["derive"] }
rocket_contrib = 0.4
有关 rocket_contrib https://api.rocket.rs/v0.4/rocket_contrib/json/struct.Json.html
的更多信息最简单的方法就是使用 serde_json:
serde_json::to_string(&MyStructObject);
serde_json::to_string 将 return 一个 Result< String >,其中字符串是 json 字符串。最后,在您的 Cargo.toml 中,您需要具备以下内容:
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"