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