我希望能够将Vec序列化为JSON(以及其他基于UTF-8的其他格式)的base64编码的字符串,同时为二进制序列化格式保留字节数组。
#[derive(Serialize, Deserialize)]
struct MyStruct {
binary_data: Vec<u8>,
}
默认情况下,serde_json会将binary_data
字段序列化为数字数组。相反,我想将其序列化为使用base64编码的字符串。但是,我想使用原始字节保留二进制代码(或任何其他二进制格式),并避免base64转换。
我想出的唯一解决方案是为串行器创建一个数据结构的副本,但是当您嵌套结构时,这确实很烦人且效率低下。
根据Serde的文档,您无法为相同结构的具体序列化程序提供Serialize
特征的特殊实现。
您可以创建简单的结构,如
pub struct StringableMyStruct(MyStruct);
然后为StringableMyStruct提供自定义serde::{Des,S}erialize
以支持字段中的字符串。