我有一个包含多个键和值的源 JSON,我想获取多个目标 JSON 并检查它们是否是该 JSON 的子集:目标 JSON 中的所有字段都存在于源 JSON 中并保持相同的值。
为了实现这一点,我想在 a 的值部分放置几个不同类型的值HashMap并调用equals这些值。
地图中有几种类型的值,我想接受一些键值对并检查是否
这是我想在 Java 中做的一个例子:
boolean isInMap(Map<String, Object> map, String key, Object value) {
return map.containsKey(key) && map.get(key).equals(value);
}
Run Code Online (Sandbox Code Playgroud)
这可能是一个XY 问题,但我如何在 Rust 中做到这一点?
这几乎就是@mcarton 在 Serde JSON 库中提到的内容,只是我使用了枚举匹配,我不确定这更好。
enum Value {
Str(String),
Int(i32),
// other value types
}
impl PartialEq for Value {
fn eq(&self, other: &Value) -> bool {
match *self {
Value::Str(ref s1) => match *other {
Value::Str(ref s2) => s1 == s2,
_ => false
},
Value::Int(i1) => match *other {
Value::Int(i2) => i1 == i2,
_ => false
},
// other implementations
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于我需要支持的类型少于 Serde 中提供的类型,并且我正在尝试 Rust,所以我创建了自己的枚举而不是使用serde_json::Value
| 归档时间: |
|
| 查看次数: |
1246 次 |
| 最近记录: |