Мне пришел респонс к примеру
json!({
"access_token": {},
"refresh_token": {},
}),
и хочу сравнить что структура одинаковая но не значения
Гм, а что тебе мешает сделать отдельное определение типа с нужными полями и для него вызывать deserialize?
ничего не мешает, я хотел чтобы как тот крейт делать assert_json_include!( actual: json!({ "a": { "b": 1 }, }), expected: json!({ "a": {}, }) )
assert!(actual.pointer("/a").map_or(false, |sub| sub.is_object()));
fn assert_json_include(a: Value, b: Value) { let includes = match (a, b) { (Value::Object(a), Value::Object(b)) => a.keys().zip(b.keys()).all(|(x, y)| x == y), _ => false }; assert!(includes) }
Плохо, у тебя набор ключей не должен идти в том же порядке
#[derive(Deserialize, PartialEq)] struct Shape { a: serde_json::Map<String, Value>, } let json = serde_json::json!({ "a": { "b": 1 }, }); assert!( Shape::deserialize(&json).is_ok(), )
Обсуждают сегодня