serde相关内容

我可以用Bincode反序列化具有可变长度前缀的向量吗?

我遇到了Rust二进制代码库的问题。当它序列化向量时,它始终假定前缀长度为8字节。当您始终使用BINCODE编码数据时,这是一个很好的假设,因为BINCODE可以读取它自己的序列化数据。 我所处的情况是我无法影响序列化程序,因为它不是我编写的,并且由于遗留原因,它必须保持不变。它将其向量编码为带有长度前缀的数组,其中前缀始终为2字节(或者在某些情况下为4字节,但我非常了解这些情况。一旦我知道 ..
发布时间:2022-06-28 18:30:19 其他开发

如何为盒装特征对象实现`serde::Serialize`?

我在尝试为结构创建通用向量时遇到了问题.这是我的第一次尝试: #[derive(Serialize)]结构卡{部分:Vec>}#[派生(序列化)]struct Section{标头:字符串,小部件:Vec} 这给我带来了一个错误,即 Sized 未实现并且 WidgetTrait 大小在编译时未知. 我的下一个尝试是像这样使用 Box ..
发布时间:2022-01-24 16:09:49 其他开发

为什么 Serde 不能为仅包含 &Path 的结构派生 Deserialize?

我尝试为包含对 Path 的引用的结构派生 serde::Deserialize.这产生了一条错误消息,如果您将 &'a Path 替换为 &'a str,则不会出现该错误消息.什么导致#[derive(Deserialize)]的不同行为? 游乐场> #!/bin/cargo 脚本//!```货物//![依赖项]//!serde_derive="1.0"//!塞尔德=“1.0"//!`` ..
发布时间:2021-12-25 09:52:30 其他开发

如何区分缺失的反序列化字段和空字段?

我想使用 Serde 来解析一些 JSON 作为 HTTP PATCH 请求的一部分.由于 PATCH 请求不传递整个对象,只传递要更新的相关数据,因此我需要能够区分未传递的值、显式设置为 null 的值和存在的价值. 我有一个包含多个可为空字段的值对象: 结构资源{a:选项,b:选项,c:选项,} 如果客户端像这样提交JSON: {"a": 42, "b ..
发布时间:2021-12-25 09:50:05 其他开发

如何将 Serde 与具有不同对象的 JSON 数组一起使用以获取成功和错误?

我想使用 Serde 创建一个包含错误消息和正确对象的数组: extern crate serde;//1.0.70#[宏使用]外部板条箱 serde_derive;//1.0.70外部板条箱 serde_json;//1.0.24#[派生(序列化,反序列化,调试)]酒吧结构我的错误{错误:字符串,}#[派生(序列化,反序列化,调试)]酒吧结构我的年龄{年龄:i32,名称:字符串,}fn get ..
发布时间:2021-12-25 09:41:17 其他开发

如何使用 Serde 使用顶级数组反序列化 JSON?

我有一些从 Web 服务返回的 JSON 数据.JSON 是一个顶级数组: [{“数据":“值1"},{“数据":“值2"},{“数据":“值3"}] 使用 serde_derive 制作 structs 我可以反序列化数组中包含的数据,但是,我无法让 Serde 反序列化顶级数组. 我是否遗漏了什么,或者 Serde 不能反序列化顶级数组? 解决方案 您可以简单地使用 Ve ..
发布时间:2021-12-25 09:38:51 其他开发

如何使用 Serde 在序列化期间转换字段?

如何在序列化之前对字段应用转换? 例如,如何确保此结构体定义中的字段 lat 和 lon 在序列化之前最多四舍五入到小数点后 6 位? #[derive(Debug, Serialize)]结构节点位置{#[serde(rename = "nodeId")]编号:u32,纬度:f32,长度:f32,} 解决方案 serialize_with 属性 您可以使用serialize_w ..
发布时间:2021-12-25 09:31:57 其他开发

为什么 trait 没有为明确实现的类型实现?

我正在尝试使用 Diesel 来查询 MySQL 数据库并使用带有 火箭. 我在 models.rs 中有这个 #[derive(Queryable, Serialize)]酒吧结构邮政{酒吧 ID:i32,酒吧标题:字符串,酒吧文字:字符串,发布的酒吧:bool,} cargo run 输出: -->src/main.rs:69:5|69 |Template::render("i ..
发布时间:2021-12-25 09:22:27 其他开发

如何反序列化为特征,而不是具体类型?

我正在尝试进行结构序列化,其中字节最终将通过管道发送、重构并在其上调用方法. 我创建了一个特征,这些结构将根据需要实现,我使用 serde 和 serde-cbor 进行序列化: extern crate serde_cbor;#[宏使用]外部板条箱 serde_derive;外部板条箱 serde;使用 serde_cbor::ser::*;使用 serde_cbor::de::*;特质 ..
发布时间:2021-12-21 22:24:09 其他开发

如果有的话,如何在 Rust 中添加多态特征对象的反序列化?

我正在尝试解决序列化和反序列化Box的问题.我知道在封闭类型层次结构的情况下,推荐的方法是使用枚举并且它们的序列化没有问题,但在我的情况下使用枚举是一个不合适的解决方案. 起初我尝试使用 Serde,因为它是事实上的 Rust 序列化机制.Serde 能够序列化 Box 但在 X 是特征的情况下不能.Serialize trait 无法为 trait 实现对象,因为它具有通用方法.这个特殊的 ..
发布时间:2021-12-21 22:02:52 其他开发

派生 Serde 的 Serialize 或 Deserialize 强制泛型类型可序列化,尽管它不需要是

我的类型 A 可以包含任何实现了 trait Trait 的东西,它是可序列化的,尽管实现了 trait Trait 的类型可能不是.在我的情况下,它不能 - 它是一个私有的非对称密钥: extern crate serde;#[宏使用]外部板条箱 serde_derive;使用 serde::de::DeserializeOwned;使用 serde::Serialize;特质特质{类型 Se ..
发布时间:2021-07-13 21:31:22 其他开发

使用 serde_json 序列化具有非字符串键的映射

我写了一个测试用例: use serde::{Serialize, Deserialize};使用 std::collections::BTreeMap;使用 std::fmt;#[派生(序列化,反序列化,调试,PartialEq,Eq,PartialOrd,Ord)]结构倾斜{上升:u8,距离:u8,}impl 倾斜 {pub fn new(上升:u8,距离:u8)->倾斜{倾斜{上升,距离} ..
发布时间:2021-07-13 21:25:43 其他开发

使用serde序列化结构时如何展平`Vec`字段?

我有一些 XML 的标签包含多个同名的兄弟标签,如下所示: (也可能有多个顶级 ,尽管我还没有尝试对其进行(反)序列化.) 使用此代码: use serde::{Deserialize, Serialize};使用 quick_xml::de::from_str;使用 quick_xml::se::to_string;#[派生(调试,反序列 ..
发布时间:2021-07-13 21:24:55 其他开发

使用 Serde 反序列化时,有没有办法允许未知的枚举标签?

我正在反序列化一个带标签的枚举: #[derive(Deserialize)]枚举 Foo {A(A),乙(乙),C(C),} 如果 Serde 遇到一个不是 A、B 或 C 的标签,那么它会抛出一个错误.有什么方法可以为未知标签添加一个包罗万象的变体?如果它只记录标签,我会很高兴: #[derive(Deserialize)]枚举 Foo {A(A),乙(乙),C(C),#[serde(u ..
发布时间:2021-07-13 21:21:12 其他开发

如何将两个 JSON 对象与 Rust 合并?

我有两个 JSON 文件: JSON 1 {"title": "这是一个标题",“人" : {"firstName": "约翰",“姓氏":“母鹿"},“城市":[“伦敦",“巴黎"]} JSON 2 {"title": "这是另一个标题",“人" : {“名字":“简"},“城市":[“科伦坡"]} 我想将#2 合并到#1,其中#2 覆盖#1,产生以下输出: {"title": ..
发布时间:2021-07-13 21:19:22 其他开发

如何解析包含简单列表和键值列表(关联数组)的 YAML

我有以下 YAML: 构建:- 步骤1- 第2步- 名称:第 3 步做一点事- 名称:第 4 步获取:获取...- 名称:步骤 5put:上传东西 为了解析它,我正在尝试 #[derive(Debug, Deserialize, PartialEq)]结构配置{构建:Option>}#[派生(调试,反序列化,PartialEq)]结构体{#[serde(扁平化)]项目:字符串,步骤:步骤,} ..
发布时间:2021-07-13 21:07:09 其他开发