Skip to content

Commit 5f6d741

Browse files
jaredmcqueenclaude
andcommitted
fix: handle null queue_positions using proper null deserializer
#[serde(default)] handles missing fields but not explicit null values. Add a null_as_empty_vec deserializer (matching the pattern in market.rs) to treat null as an empty Vec. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent ad3d4d0 commit 5f6d741

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/models/order.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -910,7 +910,7 @@ pub struct QueuePosition {
910910
#[derive(Debug, Clone, Serialize, Deserialize)]
911911
pub struct QueuePositionsResponse {
912912
/// Queue positions for the requested orders.
913-
#[serde(default)]
913+
#[serde(default, deserialize_with = "null_as_empty_vec::deserialize")]
914914
pub queue_positions: Vec<QueuePosition>,
915915
}
916916

@@ -975,6 +975,18 @@ impl GetQueuePositionsParams {
975975
}
976976
}
977977

978+
mod null_as_empty_vec {
979+
use serde::{Deserialize, Deserializer};
980+
981+
pub fn deserialize<'de, D, T>(deserializer: D) -> Result<Vec<T>, D::Error>
982+
where
983+
D: Deserializer<'de>,
984+
T: Deserialize<'de>,
985+
{
986+
Ok(Option::<Vec<T>>::deserialize(deserializer)?.unwrap_or_default())
987+
}
988+
}
989+
978990
#[cfg(test)]
979991
mod tests {
980992
use super::*;

0 commit comments

Comments
 (0)