11得票2回答
当使用Serde反序列化时,如何忽略额外的元组项?("trailing characters"错误)

Serde在将数据反序列化为常规结构体时会忽略未知的命名字段。当我将数据反序列化为元组结构体时(例如从异构的JSON数组中),如何忽略额外的项呢? 例如,以下代码可以很好地忽略额外的"c"字段:#[derive(Serialize, Deserialize, Debug)] pub struc...

11得票3回答
如何将反序列化为trait,而不是具体类型?

我正在尝试进行结构体序列化,其中字节最终将通过管道发送,重建后并对其调用方法。 我创建了一个适当的 trait 供这些结构体实现,并使用 serde 和 serde-cbor 进行序列化:extern crate serde_cbor; #[macro_use] extern crate s...

11得票1回答
在使用 Serde 反序列化对象时,是否有一种方法可以忽略包装/根对象?

我有以下对象:{ "data": { "id": 1, "name": "South America", "countries": { "data": [ { "id": 122, "name": ...

11得票2回答
使用serde将枚举变量的名称转换为字符串

我试图将枚举变量的名称作为serde期望/创建的字符串获取。例如,假设我有以下枚举:#[derive(Serialize, Deserialize)] #[serde(rename_all="camelCase")] pub enum SomeEnum { With...

10得票1回答
Serde:使用容器#[serde(default)],但有一些必填字段

我有一个结构体,使用了#[serde(default)]容器属性。 但是有一个字段应该是必填的(如果这个字段在传入数据中不存在,反序列化程序应该报错而不是回退到默认值)。 #[serde(default)] #[derive(Serialize, Deserialize)] struct ...

10得票1回答
为什么Serde不能为只包含&Path的结构体派生Deserialize?

我试着为一个包含对Path的引用的结构体派生serde :: Deserialize,这会产生一个错误信息,如果将&'a Path替换为&'a str 则不会发生。是什么导致了#[derive(Deserialize)]的不同行为? Playground #!/bin/ca...

10得票1回答
如何为外部类型实现serde的Serialize和Deserialize traits?

我正在尝试为一个外部枚举实现Serialize和Deserialize,但我不知道该怎么做。它有From<u64>,所以我只想让这个对象用那个来序列化。 #[derive(Serialize, Deserialize)] pub struct ImageBinds { b...

10得票1回答
将TOML反序列化为枚举向量,并包含值

我正在尝试读取一个TOML文件,以创建一个包含关联值枚举向量的结构体。以下是示例代码: extern crate serde; #[macro_use] extern crate serde_derive; extern crate toml; use std::fs::File; use...

10得票1回答
Serde能否根据字段的值将JSON反序列化为一组类型中的一个?

我有一组不同的消息以JSON格式发送,可以根据一个单独的字段进行区分,但每个变体都有不同的次要字段集合: #[derive(Debug, Serialize, Deserialize)] struct MessageOne { ///op will always be "one" ...

10得票2回答
如何将所有字段都为默认值的类型反序列化为None?

我必须对JSON块进行反序列化,其中一些地方缺少一个完整的对象,编码为具有相同结构但所有字段都设置为默认值(空字符串和零)的对象。 extern crate serde_json; // 1.0.27 #[macro_use] extern crate serde_derive; // 1....