JSON 中的 Struct 和 Enum

Serde 的 Serializer 负责选择 Rust struct 和 enum 在该格式中的表示约定。以下是 serde_json 数据格式的默认选择。为了保持一致,鼓励其他人类可读格式在可能的情况下制定类似的约定。

#![allow(dead_code, unused_variables)]

fn main() {

struct W {
    a: i32,
    b: i32,
}
let w = W { a: 0, b: 0 }; // 表示为 `{"a":0,"b":0}`

struct X(i32, i32);
let x = X(0, 0); // 表示为 `[0,0]`

struct Y(i32);
let y = Y(0); // 仅表示内部值 `0`

struct Z;
let z = Z; // 表示为 `null`

enum E {
    W { a: i32, b: i32 },
    X(i32, i32),
    Y(i32),
    Z,
}
let w = E::W { a: 0, b: 0 }; // 表示为 `{"W":{"a":0,"b":0}}`
let x = E::X(0, 0);          // 表示为 `{"X":[0,0]}`
let y = E::Y(0);             // 表示为 `{"Y":0}`
let z = E::Z;                // 表示为 `"Z"`

}