Using macros for JSON serialization Â
When it comes to serializing data and returning it to the client, we can achieve this quickly with minimal code using the JSON from 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("./state.json");
    return web::Json(state);
}
Here, we can see that we are merely reading the JSON from the JSON file and then returning the values from this wrapped in the web::Json function. It might make sense to just return Map<String, Value> from the JSON file directly, as it is a String and Value. However, the type of Map<String, Value> does not implement the Responder trait. We could update the function...