Hello.
I have two inputs(sources) - files: JSON and XLSX. I want an object (structure) in the output.
I don't want to create two different structures for deserialization.
I would like to use different functions depending on the type of input (JSON object / XLSX row).
How to do it?
Can deserialize_with be used for this?
Please help me.
Used crates:
- https://crates.io/crates/serde
- https://crates.io/crates/serde_json
- https://crates.io/crates/calamine
/// Xlsx Row
#[derive(Serialize, Deserialize, Clone, Debug, Default, Hash, PartialEq, Eq)]
pub struct VarDef
{
#[serde(deserialize_with = "de_u8")]
#[serde(rename = "SLAVE_ID")]
pub slave_id: MbSlaveId,
#[serde(deserialize_with = "de_reg_type")]
#[serde(rename = "REG_TYPE")]
pub reg_type: RegisterType,
#[serde(deserialize_with = "de_u16")]
#[serde(rename = "REG_OFFSET")]
pub reg_offset: u16,
#[serde(deserialize_with = "de_u16")]
#[serde(rename = "REG_COUNT")]
pub reg_count: u16,
#[serde(deserialize_with = "de_reg_endianness")]
#[serde(rename = "REG_ENDIAN")]
pub reg_endian: Endianness,
}
// JSON
#[derive(Serialize, Deserialize, Clone, Debug, Default, Hash, PartialEq, Eq)]
pub struct VarDef
{
pub slave_id: MbSlaveId,
pub reg_type: RegisterType,
pub reg_offset: u16,
pub reg_count: u16,
pub reg_endian: Endianness,
}