mirror of
https://github.com/serde-rs/json.git
synced 2025-10-05 16:55:00 +00:00
Struct deserialization from array Value
This commit is contained in:
parent
aab9ebf788
commit
a66a00b0f6
@ -511,7 +511,11 @@ impl<'de> serde::Deserializer<'de> for Value {
|
|||||||
where
|
where
|
||||||
V: Visitor<'de>,
|
V: Visitor<'de>,
|
||||||
{
|
{
|
||||||
self.deserialize_map(visitor)
|
match self {
|
||||||
|
Value::Array(v) => visit_array(v, visitor),
|
||||||
|
Value::Object(v) => visit_object(v, visitor),
|
||||||
|
_ => Err(self.invalid_type(&visitor)),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn deserialize_identifier<V>(
|
fn deserialize_identifier<V>(
|
||||||
@ -1044,7 +1048,11 @@ impl<'de> serde::Deserializer<'de> for &'de Value {
|
|||||||
where
|
where
|
||||||
V: Visitor<'de>,
|
V: Visitor<'de>,
|
||||||
{
|
{
|
||||||
self.deserialize_map(visitor)
|
match *self {
|
||||||
|
Value::Array(ref v) => visit_array_ref(v, visitor),
|
||||||
|
Value::Object(ref v) => visit_object_ref(v, visitor),
|
||||||
|
_ => Err(self.invalid_type(&visitor)),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn deserialize_identifier<V>(
|
fn deserialize_identifier<V>(
|
||||||
|
@ -1179,6 +1179,10 @@ fn test_parse_struct() {
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let j = json!([null, 2, []]);
|
||||||
|
Inner::deserialize(&j).unwrap();
|
||||||
|
Inner::deserialize(j).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user