基本操作
Cargo.toml:
[package]
name?=?"json"
version?=?"0.1.0"
edition?=?"2021"
#?See?more?keys?and?their?definitions?at?https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
serde?=?{?version?=?"1",?features?=?["derive"]?}
serde_json?=?"1"
tokio?=?{?version?=?"1",?features?=?["full"]?}
warp?=?"0.3"
main.rs:
use?serde::{Deserialize,?Serialize};
#[derive(Debug,?Deserialize,?Serialize)]
struct?Person?{
????name:?String,
????age:?i64,
}
fn?main()?{
????let?json_str?=?r#"
????????????{
????????????"name":?"dashen",
????????????"age":?18
????????????}
???"#;
????let?person:?Person?=?serde_json::from_str(json_str).unwrap();
????println!("{:?}",?person)
}
輸出為:
Person?{?name:?"dashen",?age:?18?}
嵌套結構體
warp[1]
use?serde::{Deserialize,?Serialize};
use?warp::Filter;
#[derive(Debug,?Deserialize,?Serialize)]
struct?Person?{
????name:?String,
????age:?i64,
}
#[derive(Debug,?Deserialize,?Serialize)]
struct?Demo?{
????name:?String,
????person:?Person,
}
#[tokio::main]
async?fn?main()?{
????let?hello?=?warp::path!("json")
????????.map(||?warp::reply::json(
????????????&Demo?{
????????????????name:?"geek".to_string(),
????????????????person:?Person?{
????????????????????name:?"dashen".to_string(),
????????????????????age:?28,
????????????????},
????????????}
????????));
????warp::serve(hello)
????????.run(([127,?0,?0,?1],?3030)).await;
}


返回不同的結構(一般用枚舉來解決)
use?serde::{Deserialize,?Serialize};
use?warp::Filter;
#[derive(Debug,?Deserialize,?Serialize)]
struct?Person?{
????name:?String,
????age:?i64,
}
#[derive(Debug,?Deserialize,?Serialize)]
struct?Demo?{
????name:?String,
????person:?Person,
????shape:?Shape,
}
#[derive(Debug,?Deserialize,?Serialize)]
#[serde(rename_all?=?"lowercase",?tag?=?"shape")]?//?處理成小寫,同時加一個tag區(qū)分啥形狀
enum?Shape?{
????Circle?{
????????radius:?f64,
????},
????Rectangle?{
????????length:?f64,
????????width:?f64,
????},
}
#[tokio::main]
async?fn?main()?{
????let?hello?=?warp::path!("json")
????????.map(||?warp::reply::json(
????????????&Demo?{
????????????????name:?"geek".to_string(),
????????????????person:?Person?{
????????????????????name:?"dashen".to_string(),
????????????????????age:?28,
????????????????},
????????????????shape:?Shape::Circle?{
????????????????????radius:?3.5
????????????????},
????????????}
????????));
????warp::serve(hello)
????????.run(([127,?0,?0,?1],?3030)).await;
}

參考資料
warp: https://github.com/seanmonstar/warp文章來源:http://www.zghlxwxcb.cn/news/detail-672403.html
本文由 mdnice 多平臺發(fā)布文章來源地址http://www.zghlxwxcb.cn/news/detail-672403.html
到了這里,關于Rust處理JSON的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!