Serialization 将未知JSON序列化并反序列化为二进制
我正在编写一个以json对象作为输入的微服务。这个json对象只是部分已知,因此我将其映射到的结构如下所示:Serialization 将未知JSON序列化并反序列化为二进制,serialization,rust,deserialization,serde,bincode,Serialization,Rust,Deserialization,Serde,Bincode,我正在编写一个以json对象作为输入的微服务。这个json对象只是部分已知,因此我将其映射到的结构如下所示: #[derive(Serialize, Deserialize)] pub struct Incoming { uri: String, payload: serde_json::Value, id: String } 然后,我想将其发布到RabbitMQ队列,以便使用bincode对其进行序列化: let incoming = serde_json::from
#[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");
let incoming=serde_json::from_slice::(&incoming).expect(“序列化失败”);
//此线路出现故障:
bincode::序列化(&传入).expect(“未能反序列化为二进制”);
接收服务(使用者)无法对此进行反序列化(即使它具有完全相同的模型),并导致Err(反序列化anynotsupported)
据我所知,这是从结构的serde_json::Value
部分得到的。
那么,如何将部分未知的JSON对象序列化为二进制,以便在接收服务上对其进行反序列化?负载是单个对象吗?@FrenchBoiethios它是单个对象,但它可以(而且很可能会)是嵌套对象。如果这就是你想知道的?是的。什么操作失败了?@FrenchBoiethios在我们使用来自RabbitMQ的消息后进行反序列化:
bincode::反序列化::(delivery.data.as_slice())
最初呈现给您的json对象似乎是[u8]
?(因此您在其上调用了serde_json::from_slice
)。发送该逐字记录并在接收方对其进行解码是否可行?有效负载是单个对象吗?@FrenchBoiethios它是单个对象,但它可以(而且很可能会)是嵌套对象。如果这就是你想知道的?是的。什么操作失败了?@FrenchBoiethios在我们使用来自RabbitMQ的消息后进行反序列化:bincode::反序列化::(delivery.data.as_slice())
最初呈现给您的json对象似乎是[u8]
?(因此您在其上调用了serde_json::from_slice
)。发送逐字记录并在接收方解码是否有效?