11得票1回答
如何根据键名反序列化为枚举变量?

我有两种形式的JSON: "Example:" { "field": 42, "A": 76 } "Example:" { "field": 42, "B": 110 } 我可以帮你翻译成中文。需要将其反序列化为以下结构体: struct Example { field: i3...

13得票4回答
我们如何编写一个通用函数来检查Serde序列化和反序列化?

在一个涉及自定义 Serde (1.0) 序列化和反序列化方法的项目中,我使用了这个测试程序来检查序列化一个对象并进行反序列化是否会产生等效的对象。 // let o: T = ...; let buf: Vec<u8> = to_vec(&o).unwrap(); le...

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

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

7得票1回答
使用serde_json将JSON对象转换为HashMap

我将尝试使用 serde_json 在 Rust 中将 JSON 对象解析为 HashMap。但是,使用以下代码时,我会收到错误提示: error[E0507]: cannot move out of index of `Value` 我该如何将那个Value放入我的HashMap中呢?...

13得票2回答
使用serde_json在编译时反序列化文件

在我的程序开头,我从一个文件中读取数据:let file = std::fs::File::open("data/games.json").unwrap(); let data: Games = serde_json::from_reader(file).unwrap(); 出于以下原因,我想...

7得票1回答
用serde将毫秒级时间戳字符串反序列化为DateTime

我从外部API收到一个毫秒级时间戳,作为JSON字符串属性。 {"time":"1526522699918"} 如何最好地使用Serde将毫秒级时间戳解析为字符串? ts_milliseconds选项适用于整数类型的毫秒级时间戳,但在使用字符串时会引发错误。 示例 - Rust Pl...

8得票1回答
将一个对象转换为serde_json::Value而无需进行序列化和反序列化

我有一个结构体,其中包含一个字段,该字段的类型为 Option<serde_json::Value> 我想要能够在那个字段中存储任何对象(即由任何结构创建的对象)。我目前使用的方法是先将对象转换为JSON字符串(使用serde_json::to_string),然后再使用serd...

13得票4回答
如何支持Serde枚举类型中的未知或其他值?

我有一个JSON API,返回一个看起来像这样的对象:{ "PrivatePort": 2222, "PublicPort": 3333, "Type": "tcp" } 为了实现这一点,我拥有一个枚举和一个结构体: #[derive(Eq, PartialEq, Deseria...

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

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

7得票2回答
使用Serde进行自定义数组或值数组反序列化

我希望构建一个自定义反序列化器,将值数组的数组反序列化为Vec<Child>,其中我已经编写了一个自定义serde反序列化器,将值数组解析为Child。 一种想法是直接为Vec<Child>添加一个客户端反序列化器,但我想知道是否存在更优雅的解决方案。 作为说明...