json - 无法从 Rust 中的 JSON 检索结构
问题描述
我在通过读取 JSON 文件获取结构时遇到问题。这是配置文件的样子:
配置文件
{
"config_group_1":{
"variable_1": 10
}
}
其struct
定义为:
pub struct ConfigGroup1 {
variable_1: usize
}
pub struct MainConfig {
config_group_1: ConfigGroup1
}
我正在使用返回的函数读取String
文件config_content
。
let config: Result = serde_json::from_str(&config_content);
但是编译器指向以下错误:
missing generics for type alias `serde_json::Result`
expected 1 type argument
help: use angle brackets to add missing type argument: `<T>`rustc(E0107)
我该如何解决这个问题?在哪里定义 MainConfig 是预期的类型?
解决方案
似乎缺少了很多东西。我建议您阅读以下文档https://docs.serde.rs/serde_json/
以下是可能对您有所帮助的版本
use serde::{Deserialize, Serialize};
use serde_json::Result;
#[derive(Serialize, Deserialize)]
struct MainConfig {
config_group_1: ConfigGroup1
}
#[derive(Serialize, Deserialize)]
pub struct ConfigGroup1 {
variable_1: usize
}
fn main() -> Result<()> {
let data = r#"{"config_group_1": {"variable_1": 10 }}"#;
let p: MainConfig = serde_json::from_str(data).expect("JSON was not well-formatted");
println!("Value {} ", p.config_group_1.variable_1);
Ok(())
}