我正在尝试使用serde_json将数组数组(表示字符串单元格表)反序列化为 Rust 中的自定义结构。我知道serde_json::Value
对于这种简单的情况,使用就足够了,但我想构造一个自定义类型。
use serde::{Deserialize};
use serde_json::{self, Result};
#[derive(Deserialize, Debug)]
pub struct Row {
pub cells: Vec<String>,
}
#[derive(Deserialize, Debug)]
pub struct Table {
pub rows: Vec<Row>,
}
impl Table {
pub fn new(data: &str) -> Result<Table> {
let table = serde_json::from_str(data);
table
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn from_json_string() {
let test_table = r#"
[
["0,1", "0,2", "0,3"],
["1,1", "1,2", "1,3"]
]
"#;
let table: Table = Table::new(&test_table).unwrap();
assert_eq!(table.rows.len(), 2);
}
}
使用此代码,测试会出现Error("invalid type: string \"0,1\", expected struct Row"
.
我应该如何为这个简单的 JSON 字符串定义结构?