Serde `from_str` pour reduire le code un peu relou
dans serde
il existe des fonctions pratique pour limiter le code un peu relou comme:
match places {
Some(p) => {
if p.len() > 0 {
let j = p[0].to_owned();
let mut p = Place::new();
p.insee = value_to_string(j["insee"].to_owned());
p.name = value_to_string(j["name"].to_owned());
p.lat = value_to_f64(j["lat"].to_owned());
p.lon = value_to_f64(j["lon"].to_owned());
p.country = value_to_string(j["country"].to_owned());
p.admin = value_to_string(j["admin"].to_owned());
p.admin2 = value_to_string(j["admin2"].to_owned());
p.postCode = value_to_string(j["postCode"].to_owned());
return Ok(p);
} else {
return Err(ParserErreurs::StringParseErreur)
}
},
https://docs.serde.rs/serde_json/#parsing-json-as-strongly-typed-data-structures
qui deviens un:
let p: Place = serde_json::from_str(json)?
Existe aussi avec nanoserde
https://github.com/not-fl3/nanoserde/blob/master/tests/json.rs