我使用SERDE反序列化具有十六进制值的XML文件0x400作为一个字符串,我需要将其转换为数值1024的u32.
我是否需要实现Visitor特性,以便将0x分离,然后将400从基数16解码到基数10?如果是这样,我该怎么做才能使基数10整数的反序列化保持不变?
使用serde_json,我有String我需要转换为浮点数的JSON对象.我偶然发现了一个自定义解串器解决方案,但它似乎是一个黑客攻击. 这是下面代码的工作游乐场示例.
#[macro_use]
extern crate serde_derive;
extern crate serde;
extern crate serde_json;
use serde_json::Error;
use serde::de::{Deserialize, DeserializeOwned, Deserializer};
#[derive(Serialize, Deserialize)]
struct Example {
#[serde(deserialize_with = "coercible")]
first: f64,
second: f64,
}
fn coercible<'de, T, D>(deserializer: D) -> Result<T, D::Error>
where
T: DeserializeOwned,
D: Deserializer<'de>,
{
use serde::de::Error;
let j = String::deserialize(deserializer)?;
serde_json::from_str(&j).map_err(Error::custom)
}
fn typed_example() -> Result<(), Error> {
let data = r#"["3.141",1.618]"#;
let e: Example = serde_json::from_str(data)?;
println!("{} {}", e.first * 2.0, e.second * 2.0); …Run Code Online (Sandbox Code Playgroud)