serde

https://docs.serde.rs/serde/

https://serde.rs/

https://docs.serde.rs/serde_json/

1
2
serde = "1.0"
serde_json = "1.0"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#[derive(Deserialize, Serialize, Debug)]
#[serde(rename_all(serialize = "lowercase", deserialize = "lowercase"))]
pub enum TargetSide {
    Buy,
    Sell,
    Auto,
}

#[derive(Deserialize, Serialize, Debug)]
#[serde(rename_all(serialize = "lowercase", deserialize = "lowercase"))]
pub enum TargetMode {
    Value,
    Vol,
    Pct,
}

#[derive(Deserialize, Serialize, Debug)]
#[serde(rename_all(serialize = "lowercase", deserialize = "lowercase"))]
pub enum RoundMode {
    Ceil,
    Floor,
    Round,
}

#[derive(Deserialize, Serialize, Debug)]
pub struct TargetPosition {
    pub code: String,
    pub side: TargetSide,
    pub mode: TargetMode,
    pub value: i64,
    pub round_mode: RoundMode,
}

反序列化de:

1
let targets: Vec<TargetPosition> = serde_json::from_str(&position).unwrap();

序列化:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use serde::{Deserialize, Serialize};
use serde_json::Result;

#[derive(Serialize, Deserialize)]
struct Address {
    street: String,
    city: String,
}

fn print_an_address() -> Result<()> {
    // Some data structure.
    let address = Address {
        street: "10 Downing Street".to_owned(),
        city: "London".to_owned(),
    };

    // Serialize it to a JSON string.
    let j = serde_json::to_string(&address)?;

    // Print, write to a file, or send to an HTTP server.
    println!("{}", j);

    Ok(())
}