Is it possible to parse a JSON array into a tuple struct with a vector of enums?
use serde::Deserialize;
#[derive(Deserialize, Debug, PartialEq, Eq)]
enum Data {
Single(i32),
List(Vec<Data>),
}
#[derive(Deserialize, Debug, PartialEq, Eq)]
struct Packet(Vec<Data>);
fn main() {
let packet = r#"[1, [2], [[3]]]"#;
assert_eq!(
(serde_json::from_str::<Packet>(packet)).unwrap(),
Packet(vec![
Data::Single(1),
Data::List(vec![Data::Single(2)]),
Data::List(vec![Data::List(vec![Data::Single(3)])])
])
);
}
The above does not work, as an enum value has to be an object with a proper key. An example of valid input is "[{"Single": 1},{"List": [{"Single": 2}]}]"
.