问题标签 [serde]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
11669 浏览

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

我有一些从 Web 服务返回的 JSON 数据。JSON 是一个顶级数组:

使用serde_deriveto make structs 我可以反序列化数组中包含的数据,但是,我无法让 Serde 反序列化顶级数组。

我是否遗漏了什么,或者 Serde 不能反序列化顶级数组?

0 投票
1 回答
2129 浏览

rust - 有没有更简单的方法在反序列化时转换类型?

使用serde_jsonString ,我有需要转换为浮点数的带有 s 的 JSON 对象。我偶然发现了一个自定义反序列化器解决方案,但它似乎是一个 hack。 这是下面代码的工作游乐场示例。

上面的代码按照你的预期编译和运行,输出两个浮点数。

我正在尝试了解反序列化器解决方案的工作原理,但我想知道我是否朝着正确的方向前进,或者是否有更好的方法来做到这一点。

0 投票
1 回答
3709 浏览

struct - 如何根据键名反序列化为枚举变体?

我有 JSON,它有两种形式:

我想将它反序列化成这样的结构:

在哪里

如果不为Example.

这有效:

或者,在 YAML 中:

写起来是多余的an_enum和烦人的。如何将第一个表单反序列化到结构中?或者,或者,我如何声明一个可以成功反序列化我想要的语法的结构?

0 投票
0 回答
229 浏览

rust - Rust 中的 TOML 解码?

我正在尝试使用 TOML crate 将配置文件读入 Rust 结构。我收到了一个似乎与我的代码无关的一致 Serde 错误,因此我决定尝试 TOML 文档中的解码示例,令我惊讶的是,它未能以完全相同的错误构建。

我已经向 crate 维护者提交了一个问题,但我有一种唠叨的感觉,我可能会遗漏一些东西。

有问题的代码示例如下:

我在构建时遇到的错误如下:

我尝试使用以下工具链构建它:

  • rustc 1.20.0-nightly (2652ce677 2017-07-17)

  • rustc 1.18.0 (03fc9d622 2017-06-06)

我的 Cargo.toml 包括以下内容:

我是否遗漏了某些东西,或者用这个板条箱进行解码的基本示例是否被破坏了?

0 投票
2 回答
1145 浏览

json - How can I pattern match to get at the numbers that serde_json has parsed?

I want to convert 3rd party library enums to and from JSON. As I don't want to edit the 3rd party source code I don't want to use the derive macros.

I want to handwrite the serde_json deserialize method. I am thinking that pattern matching is the way to go but the things I need to match on are not public:

That doesn't compile. If I replace that inner bit with something I can set a breakpoint on, I can see in the debugger that e is a Number which contains a PosInt(0).

0 投票
1 回答
1999 浏览

json - 使用 serde_json 反序列化 JSON 根数组

根据 JSON 规范,JSON 文档的根可以是对象或数组。第一种情况很容易通过serde_json使用反序列化struct

但是我找不到任何关于如何反序列化(未命名的)structs 数组的文档。

0 投票
1 回答
1148 浏览

rust - 反序列化具有泛型类型的可选结构字段会导致语义怪异

我正在尝试将 JSON 反序列化为包含可选字段的结构authorization。JSON 可能包含也可能不包含此字段。如果它确实包含该字段,我将自定义反序列化为hyper::header::Authorization<hyper::header::Scheme>. 因为Authorization需要一个泛型类型Scheme,所以我需要(正如我所写的那样)在我的结构中包含泛型类型。

所有的测试都通过了,但是最后一个( ,没有de_json_none授权字段的 JSON的那个)在语义上很奇怪,因为我必须针对一个具有确定类型的变量(如图所示或),这两者都没有任何意义数据,尽管从 Rust 的角度来看是完全有效的。SchemeBearerBasic

很清楚为什么会这样,但这是我不想要的,我不知道如何解决。

我想编写一个 Rocket 处理程序,它只匹配包含授权字段类型的数据,方法Authorization<Bearer>是将数据类型设置为Headers<Bearer>. 目前,它还将匹配根本没有该字段的数据。我也没有明确的方法来专门按类型调用缺少字段的数据。

我正在寻找有关如何重构此代码的建议,以反映Headers真正具有三个不同、互斥的化身(BasicBearerNone的事实。也许我应该在这里用枚举做一些事情?

0 投票
1 回答
659 浏览

rust - 在 FromForm 中反序列化 JSON 时的生命周期

我无法理解这段代码的生命周期之间的关系。基本上,我有一个 Rocket API 可以接收一些x-www-form-urlencoded数据,只有一个键:json. 直观地说,这个键包含一个 JSON 值,用百分比编码编码,一个 struct Message<T>

(我知道这是次优的 API 设计,但这是逆向工程工作,所以我别无选择)

为了方便地用作请求保护From<Message<T>>,我正在实施FromForm. 为此,我需要FromForm<'f>为任何Message<T>地方T实现 implements Deserialize<'de>。我将我的 impl 签名写为impl<'f, 'de, T> FromForm<'f> for Message<T> where T: Deserialize<'de>.

要实际执行解码,我:

  1. 获取"json"表单数据的key;
  2. URL解码值;
  3. 解析值中包含的 JSON。

尽快出手。执行此操作的代码(为方便读者使用显式类型注释):

以粘贴运行方式演示问题的要点(不适用于 Playground,因为它依赖于 Rocket)。

我认为:

  • &RawStrencoded一生'f
  • AString是由它创建的url_decode,它一直存在到函数结束
  • serde_json接受一个不需要与 重合的&'x str地方,并返回一个值(因此它一直存在到函数的末尾,并且由于它被返回,因此被移到它之外)'x'de

但似乎我的理解是不正确的:

我做错了什么,如何正确返回反序列化值?

0 投票
1 回答
560 浏览

json - 如何从内容类型为 application/hal+json 的 Rocket 处理程序响应?

我有一个用Rocket编写的项目,其端点/fooapplication/json. 我正在使用火箭、rocket_codegen、serde 和 serde_json。

这很好用,但我需要回复,application/hal+json所以我想我需要写自己的回复,但我失败了。如何使用 Content-Type 返回我的 JSON application/hal+json

0 投票
1 回答
1104 浏览

json - 使用 serde_json 解析对象内部的对象

我被卡住了,下面是我收到的 JSON:

我对我的结构应该如何使用serde_json板条箱解析属性感到有点困惑。以下是我目前拥有的:

我收到一条错误消息:

线程'main'在'调用Result::unwrap()一个Err 值:ErrorImpl { code:Message(“missing field assest”),line:0,column:0}'时惊慌失措,src/libcore/result.rs:860:4