json オブジェクトを入力として受け取るマイクロサービスを作成しています。この json オブジェクトは部分的にしか知られていないため、マップ先の構造体は次のようになります。
#[derive(Serialize, Deserialize)]
pub struct Incoming {
uri: String,
payload: serde_json::Value,
id: String
}
次に、これを RabbitMQ キューに公開したいので、次を使用してシリアル化しbincode
ます。
let incoming = serde_json::from_slice::<Incoming>(&incoming).expect("Fail to serialize");
// This line fails:
bincode::serialize(&incoming).expect("Failed to deserialize to binary");
受信側のサービス (コンシューマー) は、(まったく同じモデルを持っていても) これを逆シリアル化できず、結果はErr(DeserializeAnyNotSupported)
.
私の理解から、これserde_json::Value
は構造体の - 部分から来ました。受信側のサービスで逆シリアル化するために、部分的に不明な JSON オブジェクトをバイナリにシリアル化するにはどうすればよいでしょうか?