请教 rust 使用 serd 解析 JSON 的问题

298 天前
 codezilla

初学 rust 的新手,在不将 JSON 字符串解析到结构体的情况下,如何方便的读取 JSON 对象的 A.B.C 的值? 目前我的实现方式:

let data: Value = serde_json::from_str(response.as_str())?;
        let records = data
            .get("A")
            .ok_or_else(|| io::Error::new(ErrorKind::Other, "missing field: A"))?
            .get("B")
            .ok_or_else(|| io::Error::new(ErrorKind::Other, "missing field: B"))?
            .get("C")
            .ok_or_else(|| io::Error::new(ErrorKind::Other, "missing field: C"))?
	

请问大家有没有方法可以省略掉这些 ok_or_else()调用?

729 次点击
所在节点    编程
3 条回复
sosilver
298 天前
看文档,pointer 方法
codezilla
298 天前
@sosilver 感谢。看到了
Jirajine
298 天前
get 方法是安全 API ,你要是确定不会有空值,直接 data["A"]["B"]["C"]就完事,有 None 就 panic 。
除非非常动态,不然反序列化成具体类型是更安全和方便的做法,配合 rust 的 enum 类型。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/960512

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX