use serde::Serialize;
use serde_json::{Map, Value};
use crate::dwc::DwcMapper;
pub fn convert_to_dwc_json<T: Serialize>(table_name: &str, record: &T) -> Result<Value, serde_json::Error> {
let mut mapped_record = Map::new();
let value = serde_json::to_value(record)?;
if let Value::Object(map) = value {
for (key, val) in map {
if val.is_null() { continue; }
let dwc_key = DwcMapper::get_dwc_term(table_name, &key).unwrap_or(&key);
mapped_record.insert(dwc_key.to_string(), val);
}
}
Ok(Value::Object(mapped_record))
}