我是Rust的初学者,只是在解析JSON文件时遇到了一个问题.我try 使用serde_json来完成任务.我知道如何将ASCII文件解析为字符串,以及如何将其内容解析为Value
,但我需要Map<String, Value>
来迭代KVPs.我没有走得太远,因为我无意中犯了一个参考错误.我try 的方法如下:
use std::fs;
use std::error::Error;
use serde_json::{Value, Map};
pub struct ConfigSerde;
impl ConfigSerde {
pub fn read_config(path: &str) -> Result<Map<String, Value>, Box<Error>> {
let config = fs::read_to_string(path)?;
let parsed: Value = serde_json::from_str(&config)?;
let obj: Map<String, Value> = parsed.as_object().unwrap();
Ok(obj)
}
}
我try 运行此代码后,编译器抛出以下错误:
error[E0308]: mismatched types
--> src/config/serde.rs:11:39
|
11 | let obj: Map<String, Value> = parsed.as_object().unwrap();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `serde_json::map::Map`, found reference
|
= note: expected type `serde_json::map::Map<std::string::String, serde_json::value::Value>`
found type `&serde_json::map::Map<std::string::String, serde_json::value::Value>`
如何将JSON解析为Map
英寸的rust?虽然serde_json是首选,但我愿意使用其他 crate ,因为它似乎是所有 crate 中最 Solidity 的.