clickhouse_cloud_api/serde_helpers.rs
1//! Serde helpers used by generated models.
2
3use serde::{Deserialize, Deserializer};
4
5/// Deserialize a `Vec<T>` field, treating an explicit JSON `null` the same as
6/// an empty array. Required because the ClickHouse Cloud API emits `null` for
7/// some array-valued fields that its OpenAPI spec declares as non-nullable
8/// `array`s (e.g. `reversePrivateEndpointIds` on Kafka sources). With plain
9/// `#[serde(default)]`, a missing field works but an explicit `null` fails
10/// with "invalid type: null, expected a sequence".
11pub fn null_to_empty<'de, T, D>(d: D) -> Result<Vec<T>, D::Error>
12where
13 T: Deserialize<'de>,
14 D: Deserializer<'de>,
15{
16 Option::<Vec<T>>::deserialize(d).map(Option::unwrap_or_default)
17}