From a30bcf0f0f32d6b1c822c631cf22fa9b13a5616a Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Wed, 21 Sep 2022 23:51:38 +0200 Subject: Deserialize float model values as number from string --- src/json.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/json.rs (limited to 'src/json.rs') diff --git a/src/json.rs b/src/json.rs new file mode 100644 index 0000000..9515661 --- /dev/null +++ b/src/json.rs @@ -0,0 +1,10 @@ +use serde::{de, Deserialize, Deserializer}; +use serde_json::Value; + +pub fn number_from_string<'de, D: Deserializer<'de>>(deserializer: D) -> Result { + Ok(match Value::deserialize(deserializer)? { + Value::String(s) => s.parse().map_err(de::Error::custom)?, + Value::Number(num) => num.as_f64().ok_or(de::Error::custom("Invalid number"))?, + _ => return Err(de::Error::custom("wrong type")), + }) +} -- cgit v1.2.3-71-g8e6c