我有一个JSON数据流,其中一些JSON对象可能缺少某些字段,或者有我事先不知道的字段.

我的解决方案是使用:

let v: Value = serde_json::from_str(data)?;

如何处理访问字段stuff?如果我知道它存在,我可以使用:

v["stuff"]

如何处理 case stuff不是我数据中的一个字段?

推荐答案

如果字段不存在,则通过Value(即v["stuff"])的Index实现访问缺失字段将导致死机.而是使用Value::get,它返回Option:

if let Some(field) = v.get("stuff") {
    println!("field = {:?}", field);
} else {
    println!("field is missing");
}

Rust相关问答推荐

关联类型(类型参数)命名约定

文档示例需要导入相关的 struct ,但仅在运行测试时.这是故意的行为吗?

新创建的变量的绑定生存期

有没有办法在Rust中配置常量变量的值?

支持TLS的模拟HTTP服务器

从Type::new()调用函数

交换引用时的生命周期

在铁 rust 中传递所有权

正在将带有盒的异步特征迁移到新的异步_fn_in_特征功能

我应该如何表达具有生命周期参数的类型的总排序,同时允许与不同生命周期进行比较?

如何执行数组文字的编译时串联?

为什么在 Allocator API 中 allocate() 使用 `[u8]` 而 deallocate 使用 `u8` ?

这个不安全的 Rust 代码有什么问题,所以它可以在 Windows 上运行,但不能在 Ubuntu 上运行?

在 Rust 中查找向量中 dyn struct 的索引

unwrap 选项类型出现错误:无法移出共享引用后面的*foo

简单 TCP 服务器的连接由对等重置错误,mio 负载较小

如何在 Rust 中按 char 对字符串向量进行排序?

从 HashMap>, _> 中删除的生命周期问题

如何将 Rust 字符串转换为 i8(c_char) 数组?

在 Rust 中返回对枚举变体的引用是个好主意吗?