gpt4 book ai didi

json - 如何仅为 serde_json 实现自定义序列化?

转载 作者:行者123 更新时间:2023-12-03 11:37:54 35 4
gpt4 key购买 nike

我希望能够序列化 Vec<u8>作为 JSON(和其他基于 UTF-8 的格式)的 base64 编码字符串,同时保留二进制序列化格式的字节数组。

#[derive(Serialize, Deserialize)]
struct MyStruct {
binary_data: Vec<u8>,
}

默认情况下,serde_json 将序列化 binary_data字段作为数字数组。相反,我想将它序列化为一个用 base64 编码的字符串。然而,我想使用原始字节保留 bincode(或任何其他二进制格式)并避免 base64 转换。

我想出的唯一解决方案是专门为序列化程序创建数据结构的副本,但是当您有嵌套结构时,这确实很烦人且效率低下。

最佳答案

根据 Derde 的文档,您无法提供 Serialize 的特殊实现。相同结构的具体序列化程序的特征。

您可以创建一个 newtype 结构,然后提供一个自定义 serde::{Des,S}erialize实现 StringableMyStruct支持String s 在字段中:

pub struct StringableMyStruct(MyStruct);

关于json - 如何仅为 serde_json 实现自定义序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60008192/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com