fix: represent u64s as strings
This commit is contained in:
parent
91269023e9
commit
4da763543e
|
@ -22,6 +22,7 @@ pub struct Character {
|
|||
pub city_state: CityState,
|
||||
|
||||
pub grand_company: Option<GrandCompanyInfo>,
|
||||
#[serde(with = "crate::util::serde::opt_u64_str")]
|
||||
pub free_company_id: Option<u64>,
|
||||
|
||||
pub profile_text: String,
|
||||
|
|
|
@ -10,6 +10,7 @@ use std::collections::BTreeMap;
|
|||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct FreeCompany {
|
||||
#[serde(with = "crate::util::serde::u64_str")]
|
||||
pub id: u64,
|
||||
pub name: String,
|
||||
pub world: World,
|
||||
|
|
|
@ -10,6 +10,7 @@ pub struct CharacterSearchItem {
|
|||
pub name: String,
|
||||
pub world: World,
|
||||
pub grand_company: Option<GrandCompanyInfo>,
|
||||
#[serde(with = "crate::util::serde::opt_u64_str")]
|
||||
pub free_company_id: Option<u64>,
|
||||
#[serde(with = "url_serde")]
|
||||
pub face: Url,
|
||||
|
|
|
@ -8,6 +8,7 @@ use url::Url;
|
|||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct FreeCompanySearchItem {
|
||||
#[serde(with = "crate::util::serde::u64_str")]
|
||||
pub id: u64,
|
||||
pub name: String,
|
||||
pub world: World,
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
pub mod multi_url;
|
||||
pub mod opt_u64_str;
|
||||
pub mod u64_str;
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
use serde::{Deserializer, Deserialize, Serializer, de::Unexpected};
|
||||
|
||||
crate fn serialize<S>(u: &Option<u64>, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where S: Serializer,
|
||||
{
|
||||
match *u {
|
||||
Some(u) => serializer.serialize_u64(u),
|
||||
None => serializer.serialize_none(),
|
||||
}
|
||||
}
|
||||
|
||||
crate fn deserialize<'de, D>(deserializer: D) -> Result<Option<u64>, D::Error>
|
||||
where D: Deserializer<'de>
|
||||
{
|
||||
let s: Option<&str> = Deserialize::deserialize(deserializer)?;
|
||||
let s = match s {
|
||||
Some(s) => s,
|
||||
None => return Ok(None),
|
||||
};
|
||||
s
|
||||
.parse()
|
||||
.map_err(|_| serde::de::Error::invalid_value(Unexpected::Str(s), &"string containing a u64"))
|
||||
.map(Some)
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
use serde::{Deserializer, Deserialize, Serializer, de::Unexpected};
|
||||
|
||||
crate fn serialize<S>(u: &u64, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where S: Serializer,
|
||||
{
|
||||
serializer.serialize_str(&u.to_string())
|
||||
}
|
||||
|
||||
crate fn deserialize<'de, D>(deserializer: D) -> Result<u64, D::Error>
|
||||
where D: Deserializer<'de>
|
||||
{
|
||||
let s: &str = Deserialize::deserialize(deserializer)?;
|
||||
s
|
||||
.parse()
|
||||
.map_err(|_| serde::de::Error::invalid_value(Unexpected::Str(s), &"string containing a u64"))
|
||||
}
|
Loading…
Reference in New Issue