Skip to content

Commit 336a84c

Browse files
Support x-keep-typed-in-additional-properties in Rust model generator
When a schema sets `x-keep-typed-in-additional-properties: true`, pre-insert every key into `additional_properties` before the match dispatch so typed and untyped fields are both accessible from a single map. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent bdbff03 commit 336a84c

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

.generator/src/generator/templates/model_simple.j2

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,11 @@ impl<'de> Deserialize<'de> for {{ name }} {
118118
let mut _unparsed = false;
119119

120120
while let Some((k, v)) = map.next_entry::<String, serde_json::Value>()? {
121+
{%- if additionalProperties != false and model.get("x-keep-typed-in-additional-properties") %}
122+
if let Ok(ap_value) = serde_json::from_value(v.clone()) {
123+
additional_properties.insert(k.clone(), ap_value);
124+
}
125+
{%- endif %}
121126
match k.as_str() {
122127
{%- for attr, schema in model.get("properties", {}).items() %}
123128
{%- set required = attr in model.required %}

0 commit comments

Comments
 (0)