Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serialization 将未知JSON序列化并反序列化为二进制_Serialization_Rust_Deserialization_Serde_Bincode - Fatal编程技术网

Serialization 将未知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

我正在编写一个以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");
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
)。发送逐字记录并在接收方解码是否有效?