问题标签 [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.
json - 从 API 结果解析 JSON
我正在使用 RUST 和 Reqwest 从 API 调用以下响应:
壳:
我想解析这个输出,并且只在我从调用中收到的第一个数组(下图以粗体显示)中打印“ RRP.DISPATCHPRICE0 ”值:
好的("{\"SETTLEMENTDATE\":\"2019-10-24T12:50:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\": 68.0464 }\n" 。 ..
我对 RUST 仍然很陌生,并试图找出我应该如何最好地实现这一目标。社区中的任何人都可以提供一些建议/帮助。
我尝试了什么:
我一直在使用以下代码:
上面打印出我想要的数字并且效果很好,但是当我在“响应”的其余部分发表评论时,我无法让它工作。
请帮忙!:)
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
?
rust - 在 Rust 中使用 return 语句和省略分号有什么区别?
我正在编写一个函数,它在成功(和失败)时返回一个 serde_json::Value。以前在 Rust 中,我一直省略分号以从函数返回数据,如下面的代码示例所示:
这是我不明白的部分:这无法编译。Rust 的编译器告诉我“类型不匹配”,并且它expected type ()
, 但是found type serde_json::value::Value
. 现在,我找到了一个可以编译的解决方案,如下所示:
通过添加return
语句,编译器突然很高兴,编译器不再有什么可说的了。为什么是这样?我的印象是省略分号和使用 return 语句具有相同的含义——为什么它在这里不同?
rust - 如何使用 serde_json 动态构建 json 数组或对象?
我需要在运行时构建一个 json 对象。现在,只是一个简单的 {"key": "stringvalue"} 对象。但是必须在循环中添加每个键/值对。
这看起来很简单/基本,但我没有找到任何好的例子或文档。我终于设法让某些东西发挥作用,但它似乎太复杂了,不是正确的方法。
任何人都可以发布一个工作示例吗?
rust - 当大小写不匹配时,如何反序列化枚举?
我有一个如下所示的 JSON 结构:
我想反序列化成这些结构:
我找不到让 serde_json 使用正确大小写的方法。我不断收到这些错误:
如果我将枚举值的大小写更改为全部小写或全部大写,它可以工作,但我希望能够使用 PascalCase。
generics - Serde_json 使用泛型序列化 to_string
我正在尝试序列化该方法的params
参数send
。
但它给了我以下我无法解决的错误:
我猜这是因为它不知道需要序列化到的类型,尽管我在调用send
. 传递给的类型params
也可以是其他结构,而不仅仅是原始类型。
rust - Rust:将 JSON 数组反序列化为一个非常简单的自定义表
我正在尝试使用serde_json将数组数组(表示字符串单元格表)反序列化为 Rust 中的自定义结构。我知道serde_json::Value
对于这种简单的情况,使用就足够了,但我想构造一个自定义类型。
使用此代码,测试会出现Error("invalid type: string \"0,1\", expected struct Row"
.
我应该如何为这个简单的 JSON 字符串定义结构?
json - 是否可以使用 serde_json 反序列化部分 JSON 对象?
假设以下 JSON:
是否可以将此对象反序列化为如下结构,跳过"person"
?
将 JSON 对象反序列化为包装结构很容易,如下所示:
但就我而言,我只对Person
结构感兴趣。
编辑:
虽然我知道我可以使用' serde_json
类型Value
在 JSON 上进行操作,几乎就像在Map
derive
rust - 如何在匹配结构中设置所需的返回类型?
在 serde_json(将 JSON 解析为 Rust 结构)的 crate 文档中的示例中,省略了错误处理:
做什么由分配目标from_string()
的类型控制。
在实践中,我们必须处理错误。所以,很自然的做法是:
但这在匹配结构中是不允许的。
总是返回一个空类型“()”。
我的情况涉及许多嵌套匹配结构,所以我不想使用首先分配给变量的明显解决方案。
如何控制匹配结构中所需的目标表达式类型?
rust - 有没有办法让 serde_json 严格反序列化?
我的意思是,如果 2 个对象在某些属性上重叠,是否有办法尝试匹配所有这些属性?例如:
它总是成功A
,但我希望它失败,因为它有额外的数据,所以它落到B
(它与 exaclty 匹配的地方)。这只是我遇到的问题的一个例子。