Hello
I have code:
use serde::{Deserialize };
#[derive(Deserialize, Debug)]
struct Data {
key_a: String,
key_b: Vec<String>,
key_c: KeyC,
}
#[derive(Deserialize, Debug)]
struct Info {
key_d: String,
}
#[derive(Deserialize, Debug)]
#[serde(untagged)]
enum KeyC {
VerA(String),
VerB(Vec<Info>),
}
fn typed_example() {
let data = r#"[
{"key_a":"valueAB","key_b":["AR","valueYH","valueKI"],"key_c":[{"key_d":"valueED"}]},
{"key_a":"valueQS","key_b":["ER","valueIK","valueDF"],"key_c":[]},
{"key_a":"valueQS","key_b":["ER","valueIK","valueDF"],"key_c":""},
{"key_a":"valueAB","key_b":["AR","valueCT","valueHP"],"key_c":[{"key_d":"valueUF"}]}
]"#;
let p: Vec<Data> = serde_json::from_str(data).unwrap();
for item in p.iter() {
println!("from json: {} == {:?}",item.key_a, item.key_c );
}
}
fn main() {
let _ww = typed_example();
}
If I run it I got:
from json: valueAB == VerB([Info { key_d: "valueED" }])
from json: valueQS == VerB([])
from json: valueQS == VerA("")
from json: valueAB == VerB([Info { key_d: "valueUF" }])
As you can see "item.key_a" deserialized in value, but "key_c" is not
So my question is how to get "key_d" out of "key_c"?
Thank you in advance