使用 postgres rust 驱动,文档 https://docs.rs/postgres/latest/postgres/,
使用 select * 语句查询数据,在用 serde_json 序列化基本类型的时候正常,但是特殊类型就panic 了,如 时间戳类型 TIMESTAMP,代码如下
l
let query = format!("SELECT * FROM \"{}\".\"{}\";", &schema, &table);
let records = client.query(&query, &[]).expect("没有获取到结果");
let mut result: Vec<Map<String, Value>> = vec![];
for row in records.iter() {
let mut record = serde_json::Map::new();
for (i, column) in row.columns().iter().enumerate() {
let value: Value = match column.type_() {
&postgres::types::Type::INT4 => row.get::<_, i32>(i).into(),
&postgres::types::Type::TEXT => row.get::<_, String>(i).into(),
&postgres::types::Type::BOOL => row.get::<_, bool>(i).into(),
/// 这里报错
&postgres::types::Type::TIMESTAMP => row.get::<_, String>(i).into(),
// &postgres::types::Type::TIMESTAMP => {
// row.get::<_, NaiveDateTime>(i).into()
// }
// Add more type conversions as needed
_ => Value::Null,
};
record.insert(column.name().to_string(), value);
}
result.push(record);
}
result
怎么处理 postgres 中的特殊类型如 TIMESTAMP 类型的序列化?
Cargo.toml文件: