相关疑难解决方法(0)

如何使用Serde在反序列化期间转换字段?

我使用SERDE反序列化具有十六进制值的XML文件0x400作为一个字符串,我需要将其转换为数值1024u32.

我是否需要实现Visitor特性,以便将0x分离,然后将400从基数16解码到基数10?如果是这样,我该怎么做才能使基数10整数的反序列化保持不变?

hex rust serde

10
推荐指数
1
解决办法
2028
查看次数

在反序列化时是否有更简单的方法来转换类型?

使用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)

rust serde serde-json

6
推荐指数
2
解决办法
812
查看次数

标签 统计

rust ×2

serde ×2

hex ×1

serde-json ×1