From ab5d70d44c9ef671d431a7409a469bc56074611c Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Sat, 19 Oct 2024 16:13:05 -0700 Subject: [PATCH] Added convenience wrappers for stringifying geojson (#229) Co-authored-by: Jere Suikkila --- CHANGES.md | 1 + examples/geojson_to_string.rs | 18 ++++++++++++++++++ src/geojson.rs | 7 +++++++ 3 files changed, 26 insertions(+) create mode 100644 examples/geojson_to_string.rs diff --git a/CHANGES.md b/CHANGES.md index db8142e..130c0ae 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -12,6 +12,7 @@ * Added `GeometryCollection::try_from(&GeoJson)` and deprecated `quick_collection` for conventional naming and simpler docs. * +* Added `GeoJson::to_string_pretty` as convenience wrappers around the same `serde_json` methods. ## 0.24.1 diff --git a/examples/geojson_to_string.rs b/examples/geojson_to_string.rs new file mode 100644 index 0000000..3923198 --- /dev/null +++ b/examples/geojson_to_string.rs @@ -0,0 +1,18 @@ +use std::error::Error; +use std::fs::File; +use std::io::BufReader; + +use geojson::{Feature, GeoJson}; + +fn main() -> Result<(), Box> { + let file_reader = BufReader::new(File::open("tests/fixtures/canonical/good-feature.geojson")?); + + let feature: Feature = serde_json::from_reader(file_reader)?; + + let geojson: GeoJson = feature.into(); + + println!("{}", &geojson.to_string()); + println!("{}", &geojson.to_string_pretty()?); + + Ok(()) +} diff --git a/src/geojson.rs b/src/geojson.rs index 8a3656e..7213a29 100644 --- a/src/geojson.rs +++ b/src/geojson.rs @@ -233,6 +233,13 @@ impl GeoJson { { serde_json::from_reader(rdr) } + + /// Convenience wrapper for [serde_json::to_string_pretty()] + pub fn to_string_pretty(self) -> Result { + ::serde_json::to_string_pretty(&self) + .map_err(|err| Error::MalformedJson(err)) + .and_then(|s| Ok(s.to_string())) + } } impl TryFrom for GeoJson {