serde_json - 如何使我的结构体能够在JSON和其他格式之间进行转换?

3
看着 serde_json 的文档,我不明白要实现哪个 trait 才能使一个结构体可序列化为 json 并从 json 反序列化。显然的答案可能是 DeserializerSerializer,但这些都是结构体,而不是 traits。
使用 rustc-serialize,我可以实现 ToJsonFromJson traits。
2个回答

4

你没有serde :: Serialize的链接,你从哪里得到它的? - user266003
@jawanam 这里在serde的crate中有定义,可以在https://serde-rs.github.io/serde/serde/serde/index.html找到。 - undefined
这是正确的,但在文档中没有提供。 - user266003
@jawanam 是的,我有点混淆它们具体在哪里定义了。 - undefined

2
要将一个结构体反序列化为 JSON 文件,请运行类似以下代码的代码:
let struct = Struct::create();
let slice_string_in_json_format = serde_json::to_string(&struct);

与将JSON文件组件序列化为结构体不同,您可以使用类似的模式:

fn parsing_json_into_struct() -> Result<Struct> {

    // Open the json file
    let mut file_content = match File::open("file.json") {
        Ok(
            file) => file,  
            Err(_) => panic!("Could not read the json file")
    };

    // Transform content of the file into a string 
    let mut contents = String::new();
    match file_content.read_to_string(&mut contents)
     {
        Ok(_) => {},
        Err(err) => panic!("Could not deserialize the file, error code: {}", err)
    };

    let module: Result<Struct> = serde_json::from_str(&contents.as_str());
    module
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接