Function deserialize_optional_geometry

Source
pub fn deserialize_optional_geometry<'de, D, G>(
    deserializer: D,
) -> Result<Option<G>, D::Error>
where D: Deserializer<'de>, G: TryFrom<Geometry>, G::Error: Display,
Expand description

serde::deserialize_with helper to deserialize an optional GeoJSON Geometry into another type, like an optional geo_types Geometry.

ยงExamples

use geojson::de::deserialize_optional_geometry;
use serde::Deserialize;
use serde_json::{json, from_value};

#[derive(Deserialize)]
struct MyStruct {
    #[serde(rename = "count")]
    _count: usize,
    #[serde(default, deserialize_with = "deserialize_optional_geometry")]
    geometry: Option<geo_types::Point<f64>>,
}

let json = json! {{
    "count": 0,
    "geometry": {
        "type": "Point",
        "coordinates": [125.6, 10.1]
    },
}};
let feature: MyStruct = from_value(json).unwrap();
assert!(feature.geometry.is_some());

let json = json! {{
    "count": 1,
}};
let feature: MyStruct = from_value(json).unwrap();
assert!(feature.geometry.is_none())