Rust-序列化/反序列化-Serde

Rust中序列化通過derive宏serde三方庫實現(xiàn)

serde = { version = "1.0.137", features = ["derive", "rc"] } # 引用serde并開啟derive features
serde_json = "1.0.81" # 用于serde<-->json

示例代碼

use serde::{Serialize,Deserialize};
fn main() {
    serde_attr_demo1();
}
// 使用derive來進(jìn)行序列化
#[derive(Serialize, Deserialize, Debug)]
struct Point {
    x: i32,
    y: i32,
}
fn serde_attr_demo1() {
    let  p = Point{x:1, y:2};
    // 序列化:struct -> json
    let serialized = serde_json::to_string(&p).unwrap();
    println!("serialized = {}", serialized);
    // 反序列化: json -> struct
    let deserialized: Point = serde_json::from_str(&serialized).unwrap();
    println!("deserialized = {:?}", deserialized);
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Event {
    debug_meta: DebugMeta,
}
#[derive(Debug, Deserialize, Serialize)]
struct DebugMeta {
    images: Vec<String>,
}
fn serde_attr_demo2() {
    let json_str = r#"{
        "debug_meta":{
            "images":[
                "0x100002398",
                "0x1000021ef"
            ]
        }
    }"#;
    let event: Event = serde_json::from_str(&json_str).unwrap();
    println!("event={:?}",event);
}
let data = r#"
{
    "name": "John Doe",
    "age": 43,
    "phones": [
        "+44 1234567",
        "+44 2345678"
    ]
}"#;
let v: Value = serde_json::from_str(data)?;
println!("Please call {} at the number {}", v["name"], v["phones"][0]);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容