如何 deserialize/serialize 构造为没有键的数组
How to deserialize/serialize struct as array without keys
我如何 de/serialize 构建没有键的结构?因为我不会改变字段的顺序,索引可以作为键来减少有效负载的大小。
我正在使用 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 enum 手动完成此操作,但最终我将编写更多代码并且将无法使用 serde_bytes
crate 有效解码 Vec<u8>
只需使用serde_tuple
that is dedicated to "De/serialize struct as an array of values" issue #637:
#[derive(serde_tuple::Serialize_tuple, serde_tuple::Deserialize_tuple)]
struct Foo {
a: String,
b: u128,
c: f64,
d: Vec<u8>,
}
我如何 de/serialize 构建没有键的结构?因为我不会改变字段的顺序,索引可以作为键来减少有效负载的大小。
我正在使用 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 enum 手动完成此操作,但最终我将编写更多代码并且将无法使用 serde_bytes
crate 有效解码 Vec<u8>
只需使用serde_tuple
that is dedicated to "De/serialize struct as an array of values" issue #637:
#[derive(serde_tuple::Serialize_tuple, serde_tuple::Deserialize_tuple)]
struct Foo {
a: String,
b: u128,
c: f64,
d: Vec<u8>,
}