mirror of
https://github.com/gorules/zen.git
synced 2026-10-05 00:02:26 +00:00
fix: number serialization
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
use crate::variable::Variable;
|
||||
use serde::{ser, Serialize, Serializer};
|
||||
use rust_decimal::prelude::ToPrimitive;
|
||||
use serde::ser::SerializeMap;
|
||||
use serde::{Serialize, Serializer};
|
||||
|
||||
impl Serialize for Variable {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
@@ -9,7 +11,21 @@ impl Serialize for Variable {
|
||||
match self {
|
||||
Variable::Null => serializer.serialize_unit(),
|
||||
Variable::Bool(v) => serializer.serialize_bool(*v),
|
||||
Variable::Number(v) => ser::Serialize::serialize(v, serializer),
|
||||
Variable::Number(v) => {
|
||||
if let Some(float) = v.to_f64() {
|
||||
return serializer.serialize_f64(float);
|
||||
}
|
||||
|
||||
if let Some(integer) = v.to_i128() {
|
||||
return serializer.serialize_i128(integer);
|
||||
}
|
||||
|
||||
let string_value = v.to_string();
|
||||
|
||||
let mut map = serializer.serialize_map(Some(1))?;
|
||||
map.serialize_entry("$serde_json::private::Number", &string_value)?;
|
||||
map.end()
|
||||
}
|
||||
Variable::String(v) => serializer.serialize_str(v),
|
||||
Variable::Array(v) => {
|
||||
let borrowed = v.borrow();
|
||||
|
||||
Reference in New Issue
Block a user