簡體   English   中英

如何僅為 serde_json 實現自定義序列化?

[英]How to implement a custom serialization only for serde_json?

我希望能夠將Vec<u8>序列化為 JSON(和其他基於 UTF-8 的格式)的 base64 編碼字符串,同時保留二進制序列化格式的字節數組。

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

默認情況下,serde_json會序列化binary_data領域為數字的數組。 相反,我想將它序列化為一個用 base64 編碼的字符串。 然而,我想使用原始字節保留 bincode(或任何其他二進制格式)並避免 base64 轉換。

我想出的唯一解決方案是專門為序列化程序創建數據結構的副本,但是當您具有嵌套結構時,這確實很煩人且效率低下。

根據 Derde 的文檔,您不能為相同結構的具體序列化程序提供Serialize trait 的特殊實現。

您可以創建一個NEWTYPE結構,然后提供定制serde::{Des,S}erialize實施StringableMyStruct支持String S IN字段:

pub struct StringableMyStruct(MyStruct);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM