Implement the outstanding type casts for serde_json.
This commit is contained in:
parent
021a7bd739
commit
c300d18a75
67
src/bin.rs
67
src/bin.rs
@ -355,24 +355,63 @@ impl Castable for serde_json::Value {
|
|||||||
})
|
})
|
||||||
.ok(),
|
.ok(),
|
||||||
(serde_json::Value::Number(_), "number") => Some(IceResult::from_borrowed(self)),
|
(serde_json::Value::Number(_), "number") => Some(IceResult::from_borrowed(self)),
|
||||||
(serde_json::Value::Null, "number") => None,
|
(serde_json::Value::Null, "number") => {
|
||||||
(serde_json::Value::Bool(_), "number") => None,
|
Some(IceResult::from_owned(serde_json::Value::Number(0.into())))
|
||||||
|
}
|
||||||
|
(serde_json::Value::Bool(boolean), "number") => {
|
||||||
|
if *boolean {
|
||||||
|
Some(IceResult::from_owned(serde_json::Value::Number(1.into())))
|
||||||
|
} else {
|
||||||
|
Some(IceResult::from_owned(serde_json::Value::Number(0.into())))
|
||||||
|
}
|
||||||
|
}
|
||||||
(serde_json::Value::Array(_), "number") => None,
|
(serde_json::Value::Array(_), "number") => None,
|
||||||
(serde_json::Value::Object(_), "number") => None,
|
(serde_json::Value::Object(_), "number") => None,
|
||||||
|
|
||||||
(serde_json::Value::String(text), "string") => todo!(),
|
(serde_json::Value::String(text), "string") => Some(IceResult::from_borrowed(self)),
|
||||||
(serde_json::Value::Number(_), "string") => todo!(),
|
(serde_json::Value::Number(num), "string") => Some(IceResult::from_owned(
|
||||||
(serde_json::Value::Null, "string") => todo!(),
|
serde_json::Value::String(num.to_string()),
|
||||||
(serde_json::Value::Bool(_), "string") => todo!(),
|
)),
|
||||||
(serde_json::Value::Array(_), "string") => todo!(),
|
(serde_json::Value::Null, "string") => Some(IceResult::from_owned(
|
||||||
(serde_json::Value::Object(_), "string") => todo!(),
|
serde_json::Value::String("null".to_owned()),
|
||||||
|
)),
|
||||||
|
(serde_json::Value::Bool(boolean), "string") => Some(IceResult::from_owned(
|
||||||
|
serde_json::Value::String(boolean.to_string()),
|
||||||
|
)),
|
||||||
|
(serde_json::Value::Array(_), "string") => Some(IceResult::from_owned(
|
||||||
|
serde_json::Value::String(self.render(&Vec::new()).unwrap_or("".to_owned())),
|
||||||
|
)),
|
||||||
|
(serde_json::Value::Object(_), "string") => Some(IceResult::from_owned(
|
||||||
|
serde_json::Value::String(self.render(&Vec::new()).unwrap_or("".to_owned())),
|
||||||
|
)),
|
||||||
|
|
||||||
(serde_json::Value::String(text), "boolean") => todo!(),
|
(serde_json::Value::String(text), "boolean") => {
|
||||||
(serde_json::Value::Number(_), "boolean") => todo!(),
|
if text.is_empty() {
|
||||||
(serde_json::Value::Null, "boolean") => todo!(),
|
Some(IceResult::from_owned(serde_json::Value::Bool(false)))
|
||||||
(serde_json::Value::Bool(_), "boolean") => todo!(),
|
} else {
|
||||||
(serde_json::Value::Array(_), "boolean") => todo!(),
|
Some(IceResult::from_owned(serde_json::Value::Bool(true)))
|
||||||
(serde_json::Value::Object(_), "boolean") => todo!(),
|
}
|
||||||
|
}
|
||||||
|
(serde_json::Value::Number(json_num), "boolean") => {
|
||||||
|
Some(IceResult::from_owned(serde_json::Value::Bool(
|
||||||
|
match (json_num.as_u64(), json_num.as_i64(), json_num.as_f64()) {
|
||||||
|
(Some(num), _, _) => num != 0,
|
||||||
|
(_, Some(num), _) => num != 0,
|
||||||
|
(_, _, Some(num)) => num != 0.0 && !num.is_nan(),
|
||||||
|
_ => false,
|
||||||
|
},
|
||||||
|
)))
|
||||||
|
}
|
||||||
|
(serde_json::Value::Null, "boolean") => {
|
||||||
|
Some(IceResult::from_owned(serde_json::Value::Bool(false)))
|
||||||
|
}
|
||||||
|
(serde_json::Value::Bool(_), "boolean") => Some(IceResult::from_borrowed(self)),
|
||||||
|
(serde_json::Value::Array(_), "boolean") => {
|
||||||
|
Some(IceResult::from_owned(serde_json::Value::Bool(true)))
|
||||||
|
}
|
||||||
|
(serde_json::Value::Object(_), "boolean") => {
|
||||||
|
Some(IceResult::from_owned(serde_json::Value::Bool(true)))
|
||||||
|
}
|
||||||
|
|
||||||
(_, _) => panic!("Unimplemented cast"),
|
(_, _) => panic!("Unimplemented cast"),
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user