【问题标题】:How to deserialize/serialize struct as array without keys如何将结构反序列化/序列化为没有键的数组
【发布时间】:2021-09-12 09:58:41
【问题描述】:

如何在没有键的情况下对结构进行反序列化/序列化?由于我不会更改字段的顺序,因此索引可以作为键来减少有效负载的大小。

我正在使用 serde_json 和 ciborium crates,它们都具有顶级数组值。

例如,

跟随 cbor/json

["string1", 1, 1.1, [4, 34, 4, 4]]

应该转换成这个

struct Foo {
    a: String,
    b: u128,
    c: f64,
    d: Vec<u8>,
}

我可以通过使用 ciborium crate 的 Value::array 枚举来手动执行此操作,但我最终会编写更多代码,并且无法使用 serde_bytes crate 有效解码 Vec&lt;u8&gt;

【问题讨论】:

标签: json rust serde cbor


【解决方案1】:

只需使用serde_tuple 专用于“将结构反序列化为值数组”问题#637

#[derive(serde_tuple::Serialize_tuple, serde_tuple::Deserialize_tuple)]
struct Foo {
    a: String,
    b: u128,
    c: f64,
    d: Vec<u8>,
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-05
    • 2010-12-11
    • 2023-03-11
    • 1970-01-01
    • 2010-10-18
    • 2014-11-28
    • 1970-01-01
    • 2012-12-15
    相关资源
    最近更新 更多