Rust CSV转换成 JSON 示例代码 (迭代实现)

xiaoxiao2021-04-18  104

Rust的第三方库 没有CSV  转换成 JSON 的方法,只能自己写,实例代码如下:

fn converter2_json(header: &mut Vec<String>, rows: Vec<Vec<String>>) -> Vec<String> { let mut json_vet = vec![]; for line in rows { let mut map = Map::new(); read(&mut map, header, line); let ser = serde_json::to_string(&map).unwrap(); // println!("{}", ser); json_vet.push(ser); } json_vet } fn read(map: &mut Map<String, JsonValue>, header: &mut Vec<String>, fields: Vec<String>) { for (i, field) in fields.iter().enumerate() { let mut column = &header[i]; read_field(map, column.to_string(), field.to_string()); } } fn read_field(map: &mut Map<String, JsonValue>, column: String, field: String) { if column.contains(":") { let column_list: Vec<&str> = column.splitn(2, ":").collect(); let column_tmp = column_list[1].to_string(); if !map.contains_key(column_list[0]) { let mut map_child = Map::new(); map.insert(column_list[0].to_string(), json!(map_child)); }; let mut map_child_tmp = map .get_mut(&column_list[0].to_string()) .unwrap() .as_object_mut() .unwrap(); read_field(&mut map_child_tmp, column_list[1].to_string(), field); } else { map.insert(column.into(), json!(field)); } }

 

转载请注明原文地址: https://www.6miu.com/read-4819877.html

最新回复(0)