Using macros for JSON serialization
JSON serialization is directly supported via the Actix-web
crate. We can demonstrate this by creating a GET view that returns all our to do items in the views/to_do/get.rs
file:
use actix_web::{web, Responder}; use serde_json::value::Value; use serde_json::Map; use crate::state::read_file; pub async fn get() -> impl Responder { Â Â Â Â let state: Map<String, Value> = read_file(String::from(Â Â Â Â Â Â Â Â "./state.json")); Â Â Â Â return web::Json(state); }
Here, we simply read our JSON file and return it, we pass it into the web::Json
struct, and then we return it. The web::Json
struct implements the Responder
trait. We have to define this new view by adding the module definition to the views/to_do/mod.rs
file, and then add the route definition to the factory function:
Mod get . . . app.route(&base_path.define(String::from("/get")), Â ...