use serde::{Deserialize};
use serde_json::Number;
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Validator {
pub address: String,
pub ip: String,
pub voting_power: u128,
#[serde(deserialize_with = "deserialize_number_to_string")]
pub total_shares: String,
pub status: String,
}
fn deserialize_number_to_string<'de, D>(deserializer: D) -> Result<String, D::Error>
where
D: serde::Deserializer<'de>,
{
#[derive(Deserialize)]
#[serde(untagged)]
enum StringOrNumber {
String(String),
Number(Number),
}
match StringOrNumber::deserialize(deserializer)? {
StringOrNumber::String(s) => Ok(s),
StringOrNumber::Number(n) => Ok(n.to_string()),
}
}