【Serde】重命名


環境

  • Time 2021-12-07
  • Rust 1.57.0
  • serde 1.0.130
  • serde_json 1.0.72

概念

參考:https://serde.rs/container-attrs.html

示例

  1. #[serde(rename = "xxxx")] 針對序列化和反序列化同名
  2. #[serde(rename(serialize = "xxxx"))] 針對序列化
  3. #[serde(rename(deserialize = "xxxx"))] 針對反序列化
  4. #[serde(rename(serialize = "xxxx", deserialize = "yyyy"))] 針對不同名

其它的屬性宏也有類似的命名約定。

main.rs

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug)]
struct Person {
    #[serde(rename = "my_name")]
    name: String,
    age: u16,
}

fn main() {
    let person = Person {
        name: "JiangBo".to_owned(),
        age: 44,
    };

    let json = serde_json::to_string(&person).unwrap();
    println!("{}", json);

    let p: Person = serde_json::from_str(&json).unwrap();
    println!("{:?}", p);
}

總結

使用 serde 進行序列化和反序列化時,對 JSON 中的字段進行重命名。

附錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM