问题标签 [serde-json]

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 回答
161 浏览

json - 从 API 结果解析 JSON

我正在使用 RUST 和 Reqwest 从 API 调用以下响应:

壳:

我想解析这个输出,并且只在我从调用中收到的第一个数组(下图以粗体显示)中打印“ RRP.DISPATCHPRICE0 ”值:

好的("{\"SETTLEMENTDATE\":\"2019-10-24T12:50:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\": 68.0464 }\n" 。 ..

我对 RUST 仍然很陌生,并试图找出我应该如何最好地实现这一目标。社区中的任何人都可以提供一些建议/帮助。

我尝试了什么:

我一直在使用以下代码:

上面打印出我想要的数字并且效果很好,但是当我在“响应”的其余部分发表评论时,我无法让它工作。

请帮忙!:)

0 投票
1 回答
359 浏览

json - serde_json::Value 以外的类型的 Serde Stream Deserializer

我想解析表单的 JSON 字符串

也就是说,在顶层有许多用逗号分隔的 JSON 对象。这些对象中的每一个都具有与其他对象相同的字段(即,我可以轻松地用单个 表示所有这些对象struct)。

由于 JSON 字符串中有几个这样的对象,我相信我应该使用 a serde_json::StreamDeserializer,尽管我对 Rust 比较陌生,serde特别是,所以如果这不是正确的方法,请指出正确的方向。

这段代码代表了我想要做的事情:

我希望这段代码产生一些类似于Object({"a": Object({"foo": String("bar")}), "b": Object({"foo": String("baz")})}).

这是我看到的输出,如果我更改Deserializer::from_str(data).into_iter::<Data>();Deserializer::from_str(data).into_iter::<serde_json::Value>();.

相反,代码无法编译,出现错误Error("missing field 'foo'", line: 4, column: 5)

Data那么,为了将 JSON 反序列化为结构而不是 struct ,我需要做什么Value

0 投票
2 回答
1062 浏览

rust - 在 Rust 中使用 return 语句和省略分号有什么区别?

我正在编写一个函数,它在成功(和失败)时返回一个 serde_json::Value。以前在 Rust 中,我一直省略分号以从函数返回数据,如下面的代码示例所示:

这是我不明白的部分:这无法编译。Rust 的编译器告诉我“类型不匹配”,并且它expected type (), 但是found type serde_json::value::Value. 现在,我找到了一个可以编译的解决方案,如下所示:

通过添加return语句,编译器突然很高兴,编译器不再有什么可说的了。为什么是这样?我的印象是省略分号和使用 return 语句具有相同的含义——为什么它在这里不同?

0 投票
1 回答
3033 浏览

rust - 如何使用 serde_json 动态构建 json 数组或对象?

我需要在运行时构建一个 json 对象。现在,只是一个简单的 {"key": "stringvalue"} 对象。但是必须在循环中添加每个键/值对。

这看起来很简单/基本,但我没有找到任何好的例子或文档。我终于设法让某些东西发挥作用,但它似乎太复杂了,不是正确的方法。

任何人都可以发布一个工作示例吗?

0 投票
3 回答
4307 浏览

rust - 当大小写不匹配时,如何反序列化枚举?

我有一个如下所示的 JSON 结构:

我想反序列化成这些结构:

我找不到让 serde_json 使用正确大小写的方法。我不断收到这些错误:

如果我将枚举值的大小写更改为全部小写或全部大写,它可以工作,但我希望能够使用 PascalCase。

0 投票
1 回答
1027 浏览

generics - Serde_json 使用泛型序列化 to_string

我正在尝试序列化该方法的params参数send

但它给了我以下我无法解决的错误:

我猜这是因为它不知道需要序列化到的类型,尽管我在调用send. 传递给的类型params也可以是其他结构,而不仅仅是原始类型。

0 投票
2 回答
1318 浏览

rust - Rust:将 JSON 数组反序列化为一个非常简单的自定义表

我正在尝试使用serde_json将数组数组(表示字符串单元格表)反序列化为 Rust 中的自定义结构。我知道serde_json::Value对于这种简单的情况,使用就足够了,但我想构造一个自定义类型。

使用此代码,测试会出现Error("invalid type: string \"0,1\", expected struct Row".

我应该如何为这个简单的 JSON 字符串定义结构?

0 投票
1 回答
871 浏览

json - 是否可以使用 serde_json 反序列化部分 JSON 对象?

假设以下 JSON:

是否可以将此对象反序列化为如下结构,跳过"person"

将 JSON 对象反序列化为包装结构很容易,如下所示:

但就我而言,我只对Person结构感兴趣。

编辑:

虽然我知道我可以使用' serde_json类型Value在 JSON 上进行操作,几乎就像在Mapderive

0 投票
2 回答
692 浏览

rust - 如何在匹配结构中设置所需的返回类型?

在 serde_json(将 JSON 解析为 Rust 结构)的 crate 文档中的示例中,省略了错误处理:

做什么由分配目标from_string()的类型控制。

在实践中,我们必须处理错误。所以,很自然的做法是:

但这在匹配结构中是不允许的。

总是返回一个空类型“()”。

我的情况涉及许多嵌套匹配结构,所以我不想使用首先分配给变量的明显解决方案。

如何控制匹配结构中所需的目标表达式类型?

0 投票
1 回答
327 浏览

rust - 有没有办法让 serde_json 严格反序列化?

我的意思是,如果 2 个对象在某些属性上重叠,是否有办法尝试匹配所有这些属性?例如:

操场

它总是成功A,但我希望它失败,因为它有额外的数据,所以它落到B(它与 exaclty 匹配的地方)。这只是我遇到的问题的一个例子。