我使用SERDE反序列化具有十六进制值的XML文件0x400作为一个字符串,我需要将其转换为数值1024的u32.
我是否需要实现Visitor特性,以便将0x分离,然后将400从基数16解码到基数10?如果是这样,我该怎么做才能使基数10整数的反序列化保持不变?
我的数据类型如下所示:
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct Matrix {
#[serde(rename = "numColumns")]
pub num_cols: usize,
#[serde(rename = "numRows")]
pub num_rows: usize,
pub data: Vec<f64>,
}
Run Code Online (Sandbox Code Playgroud)
我的 JSON 主体看起来像这样:
{
"numRows": 2,
"numColumns": 1,
"data": [1.0, "NaN"]
}
Run Code Online (Sandbox Code Playgroud)
这是 Jackson 提供的序列化(来自我们使用的 Java 服务器),并且是有效的 JSON。不幸的是,如果我们调用serde_json::from_str(&blob)我们会得到一个错误:
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct Matrix {
#[serde(rename = "numColumns")]
pub num_cols: usize,
#[serde(rename = "numRows")]
pub num_rows: usize,
pub data: Vec<f64>,
}
Run Code Online (Sandbox Code Playgroud)
我知道浮点数有一些微妙之处,人们对事情应该如何发展有非常固执的看法。我尊重。Rust 特别喜欢固执己见,我喜欢这一点。
然而,最终这些 JSON blob 就是我将要收到的内容,我需要将该"NaN" …