【发布时间】:2020-01-23 07:44:55
【问题描述】:
我正在尝试使用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 字符串定义结构?
【问题讨论】:
标签: rust serde-json