问题标签 [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 回答
1228 浏览

json - 从 JSON 数组中选择键的子集

我正在尝试解析一个输出如下输出的 JSON API:

来源:http ://api.open-notify.org/astros.json

我为此使用了serde,并且到目前为止已经设法提出了以下代码:

现在,ppl_value_space正如预期的那样,得到我这个:

但是,我想找到"name"关键,因为基本上有类似的东西:

以便能够仅获取当前在太空中的宇航员的姓名。

我如何得到"name"inside "people",没有"craft"?

试着name喜欢这样:

但它以恐慌结束,这基本上意味着关键是None,因为我unwrap()Option<T>.

0 投票
1 回答
296 浏览

json - serde 中 rustc_serialize::Json 的等价物是什么?

由于serde 库将成为 rustc_serialize 的替代品,因此我正在尝试重构我的库以使用它。我无法弄清楚相应的类型rustc_serialize::Json是什么。假设,我有一个接受 json 的方法:

对应的是serde_json什么?是不是这个:

或这个:

或者是其他东西?

0 投票
1 回答
2265 浏览

json - serde_json - 如何使我的结构可从 / 转换为 json?

查看serde_json 的文档,我不明白我必须实现什么特征才能使结构可序列化到 json 并从 json 反序列化。显而易见的答案可能是DeserializerSerializer但这些是结构,而不是特征。

有了rustc-serialize我可以实现ToJsonFromJson特征。

0 投票
1 回答
11142 浏览

json - Rust 和 Serde JSON 反序列化示例?

我试图弄清楚如何使用 Serde 将 JSON 反序列化为结构。例如,serde_json自己的文档中的示例 JSON包含以下数据:

现在,如果我们假设上述数据在变量“输入”和以下代码中:

... struct 应该是什么Data样子?

0 投票
1 回答
1387 浏览

json - 根据 JSON 中的字段有条件地解码 JSON

我从 API 接收 JSON,响应可以是 30 种类型之一。每种类型都有一组唯一的字段,但所有响应都有一个字段type来说明它是哪种类型。

我的方法是使用serde。我为每种响应类型创建一个结构并使它们可解码。一旦我有了它,我该如何选择应该将哪个结构用于新收到的消息?

目前,我已经创建了另一个TypeStruct只有一个字段的结构type。我将 JSON 解码为 a TypeStruct,然后根据类型值为接收到的消息选择适当的结构,然后再次解码消息。

我想摆脱这种解码重复。

0 投票
1 回答
709 浏览

json - 使用 Serde 库时如何禁用“未使用属性”警告?

除了禁用警告之外,为什么会发生这种情况?

src/config.rs:4:10: 4:21 警告:未使用的属性,#[warn(unused_attributes)] 默认开启 src/config.rs:4 #[derive(Deserialize)]

添加#[allow(unused_attributes)]没有帮助。

0 投票
1 回答
1879 浏览

json - 用 serde_json 对迭代器进行编码的惯用方法是什么?

我正在尝试drain()使用vecRust 并将结果编码为 JSON 字符串。最好的,惯用的方法是什么?

0 投票
1 回答
2535 浏览

json - 反序列化嵌套 JSON 结构时,Serde 返回 SyntaxError “预期值”

我正在尝试从 Web API(规范)反序列化 Spotify 元数据 JSON。我正在使用 hyper 从服务器中检索 JSON,并使用 serde 将 JSON 转换为我可以在 Rust 中实际使用的东西。从服务器检索 JSON 就好了,但是当我尝试将 JSON 转换为可以使用的对象时,Rust 恐慌并抛出错误:

这一点也没有帮助,因为它根本不指出哪里出了问题。在网上搜索时,我偶然发现了一个 serde 问题,这让我认为该问题与 JSON 的嵌套结构有关。

谁能看到哪里出了问题?修复错误对我来说是最好的解决方案,但如果另一个板条箱是一个更好的解决方案,我也想听听。我已经尝试过 rustc-serialize,但是那个 crate 无法处理 json 中的“类型”变量。

我使用的代码是:

JSON:

0 投票
3 回答
2035 浏览

json - 反序列化为带有枚举成员的结构

我正在尝试采用一些看起来像这样的 json:

并用于serde将其反序列化为如下数据结构:

有一些代码,但老实说,它几乎直接来自serde“没有宏的反序列化”指南,我不确定我需要做什么才能将foo字段反序列化为Foo.

我已经DeserializeFoo枚举实现了,我认为这足以让visitor.visit_value()impl serde::de::Vistor for QuuxVisitor调用那个版本的deserialize,但似乎并非如此。

当我尝试反序列化时得到的错误Quuxcalled 'Result::unwrap()' on an 'Err' value: SyntaxError("expected value", 2, 20),但如果我Quux改为使用 a Stringforfoo而不是 a Foo,它反序列化很好。

0 投票
1 回答
567 浏览

json - 错误:此值的类型必须在此上下文中已知(Rust)/serde_json 值

我正在使用 serde_json 反序列化 json 文档。我有一个函数,给定一个字符串(这是 json 文档),将返回一个 serde_json 值(这是一个表示 json 类型的枚举),返回一个选项。该值会根据需要传递给其他函数。

但是,我意识到传递值并不是我想要的,因为这样做,密钥不可用。

为了说明我的观点,如果我有一个如下所示的 json 文档:

“root”是一个 json 对象,“regex”是 json Null,“prefixes”是一个 json 数组。

现在,json 类型 Value 是一个枚举,带有表示 json 类型的鉴别器,例如上面给出的示例的 Object、Null、Array。

serde_json crate 使用 std::collections::BTreeMap 来表示 json 文档中的节点,其中 String 类型表示 json 键(在上面,这些将是“根”、“正则表达式”和“前缀”。所以传递只是对 Values 的引用只是部分有用,我应该改为传递 BTreeMap ,这样我也可以访问密钥。

所以这是我试图重写的以下函数:

所以我开始重新编写函数,但遇到了“在这个上下文中必须知道这个值的类型”错误:

我在stackoverflow上发现了其他类似的问题: 这个值的类型必须在这个上下文中是已知的

并将其用作助手,我尝试按如下方式插入类型:

这不能解决问题。此外,尝试了其他类似的变化无济于事。那么我该如何解决这个问题?

编辑:

我在这个应用程序中有另一个功能如下:

...这工作正常。在这里你可以看到我可以调用 as_object() ,然后以元组对的形式获取键和值。我不明白为什么 as_object 在一种情况下有效,而在另一种情况下无效。我想拉出 BTreeMap 并将其作为借来的项目传递。