我正在编写一个将 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 对象序列化为二进制,以便在接收服务上对其进行反序列化呢?