首页 > 解决方案 > 无法从 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 是预期的类型?

标签: jsonrust

解决方案


似乎缺少了很多东西。我建议您阅读以下文档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(())
}

推荐阅读