#flatten #serde #struct #clone #debugging #foo #u64

serde-value-flatten

Crate 用于基于 serde 展平结构体

1 个不稳定版本

0.1.0 2019年6月25日

#18 in #flatten

Download history 115/week @ 2024-04-24 81/week @ 2024-05-01 58/week @ 2024-05-08 26/week @ 2024-05-15 32/week @ 2024-05-22 71/week @ 2024-05-29 69/week @ 2024-06-05 92/week @ 2024-06-12 107/week @ 2024-06-19 70/week @ 2024-06-26 125/week @ 2024-07-03 43/week @ 2024-07-10 77/week @ 2024-07-17 148/week @ 2024-07-24 105/week @ 2024-07-31 81/week @ 2024-08-07

421 每月下载量
用于 serde_cef

BSD-3-Clause 许可协议

11KB
76

serde-value-flatten

Build Status Latest version Documentation License

基于 serde-valueserde-value-flatten 提供了一个函数,用于展平任何实现了 serde::Serialize 的结构体。

快速入门

您可以通过将其添加到 Cargo.toml 来开始使用它。

[dependencies]
serde = "1.0"
serde_derive = "1.0"
serde_value_flatten = "0.1"

然后,创建一个实现了 serde::Serialize 特性的结构体,并使用任何 serde 库来使用它。

示例

#[derive(Serialize, Clone, Debug)]
struct SubFoo {
    a: String,
    b: u64,
}

#[derive(Serialize, Clone, Debug)]
struct Foo {
    a: String,
    b: f64,
    c: Vec<i8>,
    d: SubFoo,
}

fn main() {
    let foo = Foo { a: "test".into(), b: 0.5, c: vec![5, 9], d: SubFoo { a: "subtest".into(), b: 695217 } };
    let ser = serde_value_flatten::to_flatten_maptree("_", Some("_"), &foo).unwrap();

    println!("{}", serde_json::to_string_pretty(&ser).unwrap());
}

输出:

 {
  "_a": "test",
  "_b": 0.5,
  "_c_0": 5,
  "_c_1": 9,
  "_d_a": "subtest",
  "_d_b": 695217
}

功能 ovh-ldp

功能 ovh-ldp 允许为字段名添加后缀,以适应 LDP 命名约定

在您的 Cargo.toml 中设置

[dependencies]
serde = "1.0"
serde_derive = "1.0"
serde_value_flatten = { version = "0.1", features = ["ovh-ldp"] }

重新运行前面的示例,现在输出将是

{
  "_a": "test",
  "_b_float": 0.5,
  "_c_0_long": 5,
  "_c_1_long": 9,
  "_d_a": "subtest",
  "_d_b_double": 695217
}

许可证:BSD-3-Clause

依赖项

~335–630KB
~13K SLoC