问题标签 [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.
json - 如何使用 Serde 使用顶级数组反序列化 JSON?
我有一些从 Web 服务返回的 JSON 数据。JSON 是一个顶级数组:
使用serde_derive
to make struct
s 我可以反序列化数组中包含的数据,但是,我无法让 Serde 反序列化顶级数组。
我是否遗漏了什么,或者 Serde 不能反序列化顶级数组?
rust - 有没有更简单的方法在反序列化时转换类型?
使用serde_jsonString
,我有需要转换为浮点数的带有 s 的 JSON 对象。我偶然发现了一个自定义反序列化器解决方案,但它似乎是一个 hack。 这是下面代码的工作游乐场示例。
上面的代码按照你的预期编译和运行,输出两个浮点数。
我正在尝试了解反序列化器解决方案的工作原理,但我想知道我是否朝着正确的方向前进,或者是否有更好的方法来做到这一点。
struct - 如何根据键名反序列化为枚举变体?
我有 JSON,它有两种形式:
我想将它反序列化成这样的结构:
在哪里
如果不为Example
.
这有效:
或者,在 YAML 中:
写起来是多余的an_enum
和烦人的。如何将第一个表单反序列化到结构中?或者,或者,我如何声明一个可以成功反序列化我想要的语法的结构?
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 包括以下内容:
我是否遗漏了某些东西,或者用这个板条箱进行解码的基本示例是否被破坏了?
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)
.
json - 使用 serde_json 反序列化 JSON 根数组
根据 JSON 规范,JSON 文档的根可以是对象或数组。第一种情况很容易通过serde_json
使用反序列化struct
但是我找不到任何关于如何反序列化(未命名的)struct
s 数组的文档。
rust - 反序列化具有泛型类型的可选结构字段会导致语义怪异
我正在尝试将 JSON 反序列化为包含可选字段的结构authorization
。JSON 可能包含也可能不包含此字段。如果它确实包含该字段,我将自定义反序列化为hyper::header::Authorization<hyper::header::Scheme>
. 因为Authorization
需要一个泛型类型Scheme
,所以我需要(正如我所写的那样)在我的结构中包含泛型类型。
所有的测试都通过了,但是最后一个( ,没有de_json_none
授权字段的 JSON的那个)在语义上很奇怪,因为我必须针对一个具有确定类型的变量(如图所示或),这两者都没有任何意义数据,尽管从 Rust 的角度来看是完全有效的。Scheme
Bearer
Basic
很清楚为什么会这样,但这是我不想要的,我不知道如何解决。
我想编写一个 Rocket 处理程序,它只匹配包含授权字段类型的数据,方法Authorization<Bearer>
是将数据类型设置为Headers<Bearer>
. 目前,它还将匹配根本没有该字段的数据。我也没有明确的方法来专门按类型调用缺少字段的数据。
我正在寻找有关如何重构此代码的建议,以反映Headers
真正具有三个不同、互斥的化身(Basic
和Bearer
)None
的事实。也许我应该在这里用枚举做一些事情?
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>
.
要实际执行解码,我:
- 获取
"json"
表单数据的key; - URL解码值;
- 解析值中包含的 JSON。
尽快出手。执行此操作的代码(为方便读者使用显式类型注释):
以粘贴运行方式演示问题的要点(不适用于 Playground,因为它依赖于 Rocket)。
我认为:
- 的
&RawStr
有encoded
一生'f
。 - A
String
是由它创建的url_decode
,它一直存在到函数结束 serde_json
接受一个不需要与 重合的&'x str
地方,并返回一个值(因此它一直存在到函数的末尾,并且由于它被返回,因此被移到它之外)'x
'de
但似乎我的理解是不正确的:
我做错了什么,如何正确返回反序列化值?
json - 如何从内容类型为 application/hal+json 的 Rocket 处理程序响应?
我有一个用Rocket编写的项目,其端点/foo
以application/json
. 我正在使用火箭、rocket_codegen、serde 和 serde_json。
这很好用,但我需要回复,application/hal+json
所以我想我需要写自己的回复,但我失败了。如何使用 Content-Type 返回我的 JSON application/hal+json
?
json - 使用 serde_json 解析对象内部的对象
我被卡住了,下面是我收到的 JSON:
我对我的结构应该如何使用serde_json
板条箱解析属性感到有点困惑。以下是我目前拥有的:
我收到一条错误消息:
线程'main'在'调用
Result::unwrap()
一个Err
值:ErrorImpl { code:Message(“missing fieldassest
”),line:0,column:0}'时惊慌失措,src/libcore/result.rs:860:4