serde相关内容
我遇到了Rust二进制代码库的问题。当它序列化向量时,它始终假定前缀长度为8字节。当您始终使用BINCODE编码数据时,这是一个很好的假设,因为BINCODE可以读取它自己的序列化数据。 我所处的情况是我无法影响序列化程序,因为它不是我编写的,并且由于遗留原因,它必须保持不变。它将其向量编码为带有长度前缀的数组,其中前缀始终为2字节(或者在某些情况下为4字节,但我非常了解这些情况。一旦我知道
..
我有这些结构: #[derive(Debug, Serialize, Deserialize)] pub struct GGConf { #[serde(alias = "ssh")] #[serde(rename = "ssh")] #[serde(default)] #[serde(borrow)] pub ssh_config: Opti
..
在程序开始时,我从文件读取数据: let file = std::fs::File::open("data/games.json").unwrap(); let data: Games = serde_json::from_reader(file).unwrap(); 我想知道在编译时如何做到这一点,原因如下: 性能:运行时无需反序列化 可移植性:程序可以在任何机器上运行,不需要
..
我在尝试为结构创建通用向量时遇到了问题.这是我的第一次尝试: #[derive(Serialize)]结构卡{部分:Vec>}#[派生(序列化)]struct Section{标头:字符串,小部件:Vec} 这给我带来了一个错误,即 Sized 未实现并且 WidgetTrait 大小在编译时未知. 我的下一个尝试是像这样使用 Box
..
我尝试为包含对 Path 的引用的结构派生 serde::Deserialize.这产生了一条错误消息,如果您将 &'a Path 替换为 &'a str,则不会出现该错误消息.什么导致#[derive(Deserialize)]的不同行为? 游乐场> #!/bin/cargo 脚本//!```货物//![依赖项]//!serde_derive="1.0"//!塞尔德=“1.0"//!``
..
我想使用 Serde 来解析一些 JSON 作为 HTTP PATCH 请求的一部分.由于 PATCH 请求不传递整个对象,只传递要更新的相关数据,因此我需要能够区分未传递的值、显式设置为 null 的值和存在的价值. 我有一个包含多个可为空字段的值对象: 结构资源{a:选项,b:选项,c:选项,} 如果客户端像这样提交JSON: {"a": 42, "b
..
我想使用 Serde 创建一个包含错误消息和正确对象的数组: extern crate serde;//1.0.70#[宏使用]外部板条箱 serde_derive;//1.0.70外部板条箱 serde_json;//1.0.24#[派生(序列化,反序列化,调试)]酒吧结构我的错误{错误:字符串,}#[派生(序列化,反序列化,调试)]酒吧结构我的年龄{年龄:i32,名称:字符串,}fn get
..
我有一些从 Web 服务返回的 JSON 数据.JSON 是一个顶级数组: [{“数据":“值1"},{“数据":“值2"},{“数据":“值3"}] 使用 serde_derive 制作 structs 我可以反序列化数组中包含的数据,但是,我无法让 Serde 反序列化顶级数组. 我是否遗漏了什么,或者 Serde 不能反序列化顶级数组? 解决方案 您可以简单地使用 Ve
..
如何在序列化之前对字段应用转换? 例如,如何确保此结构体定义中的字段 lat 和 lon 在序列化之前最多四舍五入到小数点后 6 位? #[derive(Debug, Serialize)]结构节点位置{#[serde(rename = "nodeId")]编号:u32,纬度:f32,长度:f32,} 解决方案 serialize_with 属性 您可以使用serialize_w
..
我使用 serde 和 serde_json 1.0 从 base64 字符串解码数据: fn from_base64_str(string: &str) ->T{让 slice = decode_config(string, URL_SAFE).unwrap();serde_json::from_slice(&slice).unwrap()} 当我编译时,我得到了这个: error[E01
..
我正在尝试使用 Diesel 来查询 MySQL 数据库并使用带有 火箭. 我在 models.rs 中有这个 #[derive(Queryable, Serialize)]酒吧结构邮政{酒吧 ID:i32,酒吧标题:字符串,酒吧文字:字符串,发布的酒吧:bool,} cargo run 输出: -->src/main.rs:69:5|69 |Template::render("i
..
我正在尝试进行结构序列化,其中字节最终将通过管道发送、重构并在其上调用方法. 我创建了一个特征,这些结构将根据需要实现,我使用 serde 和 serde-cbor 进行序列化: extern crate serde_cbor;#[宏使用]外部板条箱 serde_derive;外部板条箱 serde;使用 serde_cbor::ser::*;使用 serde_cbor::de::*;特质
..
我正在尝试将枚举序列化为 JSON 字符串.我按照文档中的描述为我的枚举实现了 Serialize 特性,但我总是得到 {"offset":{"Int":0}} 而不是所需的{"offset":0}. extern crate serde;外部板条箱 serde_json;使用 std::collections::HashMap;使用 serde::ser::{Serialize, Serial
..
我正在尝试解决序列化和反序列化Box的问题.我知道在封闭类型层次结构的情况下,推荐的方法是使用枚举并且它们的序列化没有问题,但在我的情况下使用枚举是一个不合适的解决方案. 起初我尝试使用 Serde,因为它是事实上的 Rust 序列化机制.Serde 能够序列化 Box 但在 X 是特征的情况下不能.Serialize trait 无法为 trait 实现对象,因为它具有通用方法.这个特殊的
..
我的类型 A 可以包含任何实现了 trait Trait 的东西,它是可序列化的,尽管实现了 trait Trait 的类型可能不是.在我的情况下,它不能 - 它是一个私有的非对称密钥: extern crate serde;#[宏使用]外部板条箱 serde_derive;使用 serde::de::DeserializeOwned;使用 serde::Serialize;特质特质{类型 Se
..
我写了一个测试用例: use serde::{Serialize, Deserialize};使用 std::collections::BTreeMap;使用 std::fmt;#[派生(序列化,反序列化,调试,PartialEq,Eq,PartialOrd,Ord)]结构倾斜{上升:u8,距离:u8,}impl 倾斜 {pub fn new(上升:u8,距离:u8)->倾斜{倾斜{上升,距离}
..
我有一些 XML 的标签包含多个同名的兄弟标签,如下所示: (也可能有多个顶级 ,尽管我还没有尝试对其进行(反)序列化.) 使用此代码: use serde::{Deserialize, Serialize};使用 quick_xml::de::from_str;使用 quick_xml::se::to_string;#[派生(调试,反序列
..
我正在反序列化一个带标签的枚举: #[derive(Deserialize)]枚举 Foo {A(A),乙(乙),C(C),} 如果 Serde 遇到一个不是 A、B 或 C 的标签,那么它会抛出一个错误.有什么方法可以为未知标签添加一个包罗万象的变体?如果它只记录标签,我会很高兴: #[derive(Deserialize)]枚举 Foo {A(A),乙(乙),C(C),#[serde(u
..
我有两个 JSON 文件: JSON 1 {"title": "这是一个标题",“人" : {"firstName": "约翰",“姓氏":“母鹿"},“城市":[“伦敦",“巴黎"]} JSON 2 {"title": "这是另一个标题",“人" : {“名字":“简"},“城市":[“科伦坡"]} 我想将#2 合并到#1,其中#2 覆盖#1,产生以下输出: {"title":
..
我有以下 YAML: 构建:- 步骤1- 第2步- 名称:第 3 步做一点事- 名称:第 4 步获取:获取...- 名称:步骤 5put:上传东西 为了解析它,我正在尝试 #[derive(Debug, Deserialize, PartialEq)]结构配置{构建:Option>}#[派生(调试,反序列化,PartialEq)]结构体{#[serde(扁平化)]项目:字符串,步骤:步骤,}
..