mirror of
https://github.com/serde-rs/json.git
synced 2025-10-02 23:35:59 +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
|
||||
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>(
|
||||
@ -1044,7 +1048,11 @@ impl<'de> serde::Deserializer<'de> for &'de Value {
|
||||
where
|
||||
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>(
|
||||
|
@ -1179,6 +1179,10 @@ fn test_parse_struct() {
|
||||
],
|
||||
}
|
||||
);
|
||||
|
||||
let j = json!([null, 2, []]);
|
||||
Inner::deserialize(&j).unwrap();
|
||||
Inner::deserialize(j).unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
Loading…
x
Reference in New Issue
Block a user