ata*_*ere 2 json rust serde bincode
我有一个 IPC 实现,其中进程使用bincode序列化结构
在另一端,我正在接收它,可以说这个进程不知道它正在接收的结构,在这里,我想做类似的事情
let parsed: Result<serde_json::Value, serde_json::Error> = serde_json::from_str(json_str);
Run Code Online (Sandbox Code Playgroud)
但是用bincode,有可能吗?
我尝试做
let deser = bincode::deserialize::<serde_json::Value>(msg.bytes()))?;
Run Code Online (Sandbox Code Playgroud)
但它会抛出错误
Error: Bincode does not support the serde::Deserializer::deserialize_any method
Run Code Online (Sandbox Code Playgroud)
不能,因为必须告知 bincode 反序列化器所需的类型,但serde_json::Value要依赖反序列化器来告诉它下一个是什么类型。这两个要求相互矛盾。这也体现在以下文档deserialize_any中:
实现时
Deserialize,您应该避免依赖,Deserializer::deserialize_any除非您需要知道Deserializer输入中的类型。要知道,依赖Deserializer::deserialize_any意味着您的数据类型将只能从自描述格式进行反序列化,排除明信片和许多其他格式。
bincode是不描述自身的格式之一。
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |