use std::str::FromStr;
use serde::Serialize;
use serde_json::{
Number,
Value,
};
use crate::strict_json::{
Result,
StrictJsonError,
};
pub(in crate::strict_json) const NUMBER_TOKEN: &str =
"$serde_json::private::Number";
pub(in crate::strict_json) fn serialize_number<T>(value: &T) -> Result<Value>
where
T: ?Sized + Serialize,
{
let value = value
.serialize(serde_json::value::Serializer)
.map_err(|_| StrictJsonError::Serialization)?;
let Value::String(value) = value else {
return Err(StrictJsonError::Serialization);
};
Number::from_str(&value)
.map(Value::Number)
.map_err(|_| StrictJsonError::Serialization)
}