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 city_state: CityState,
|
||||||
|
|
||||||
pub grand_company: Option<GrandCompanyInfo>,
|
pub grand_company: Option<GrandCompanyInfo>,
|
||||||
|
#[serde(with = "crate::util::serde::opt_u64_str")]
|
||||||
pub free_company_id: Option<u64>,
|
pub free_company_id: Option<u64>,
|
||||||
|
|
||||||
pub profile_text: String,
|
pub profile_text: String,
|
||||||
|
|
|
@ -10,6 +10,7 @@ use std::collections::BTreeMap;
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
pub struct FreeCompany {
|
pub struct FreeCompany {
|
||||||
|
#[serde(with = "crate::util::serde::u64_str")]
|
||||||
pub id: u64,
|
pub id: u64,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub world: World,
|
pub world: World,
|
||||||
|
|
|
@ -10,6 +10,7 @@ pub struct CharacterSearchItem {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub world: World,
|
pub world: World,
|
||||||
pub grand_company: Option<GrandCompanyInfo>,
|
pub grand_company: Option<GrandCompanyInfo>,
|
||||||
|
#[serde(with = "crate::util::serde::opt_u64_str")]
|
||||||
pub free_company_id: Option<u64>,
|
pub free_company_id: Option<u64>,
|
||||||
#[serde(with = "url_serde")]
|
#[serde(with = "url_serde")]
|
||||||
pub face: Url,
|
pub face: Url,
|
||||||
|
|
|
@ -8,6 +8,7 @@ use url::Url;
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
pub struct FreeCompanySearchItem {
|
pub struct FreeCompanySearchItem {
|
||||||
|
#[serde(with = "crate::util::serde::u64_str")]
|
||||||
pub id: u64,
|
pub id: u64,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub world: World,
|
pub world: World,
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
pub mod multi_url;
|
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