@@ -25,8 +25,9 @@ pub struct {{ name }} {
25
25
#[serde(rename = "{{ attr }}"{% if not required and nullable %} , default, with = "::serde_with::rust::double_option"{% endif %} )]
26
26
pub {{propertyName}}: {{dataType}},
27
27
{% - endfor %}
28
- {% - if model .additionalProperties is defined and model .additionalProperties != false %}
29
- {% - set dataType = get_type (model .additionalProperties , alternative_name =None , render_nullable =false , render_option =false , render_box =false , version =version ) %}
28
+ {% - set additionalProperties = model .get ("additionalProperties" , {}) %}
29
+ {% - if additionalProperties != false %}
30
+ {% - set dataType = get_type (additionalProperties , alternative_name =None , render_nullable =false , render_option =false , render_box =false , version =version ) %}
30
31
#[serde(flatten)]
31
32
pub additional_properties: std::collections::BTreeMap<String , {{ dataType }} >,
32
33
{% - endif %}
@@ -51,7 +52,7 @@ impl {{ name }} {
51
52
{{ attr|variable_name }}: None,
52
53
{% - endif %}
53
54
{% - endfor %}
54
- {% - if model . additionalProperties is defined and model . additionalProperties != false %}
55
+ {% - if additionalProperties != false %}
55
56
additional_properties: std::collections::BTreeMap::new(),
56
57
{% - endif %}
57
58
_unparsed: false,
@@ -68,8 +69,8 @@ impl {{ name }} {
68
69
self
69
70
}
70
71
{% endfor %}
71
- {% - if model . additionalProperties is defined and model . additionalProperties != false %}
72
- {% - set dataType = get_type (model . additionalProperties , alternative_name =None , render_nullable =false , render_option =false , render_box =false , version =version ) %}
72
+ {% - if additionalProperties != false %}
73
+ {% - set dataType = get_type (additionalProperties , alternative_name =None , render_nullable =false , render_option =false , render_box =false , version =version ) %}
73
74
pub fn additional_properties(mut self, value: std::collections::BTreeMap<String , {{ dataType }} >) -> Self {
74
75
self.additional_properties = value;
75
76
self
@@ -110,8 +111,8 @@ impl<'de> Deserialize<'de> for {{ name }} {
110
111
let mut {{ propertyName }}: {% if required %} Option<{% endif %} {{ dataType }}{% if required %} >{% endif %} = None;
111
112
{% - endfor %}
112
113
113
- {% - if model . additionalProperties is defined and model . additionalProperties != false %}
114
- {% - set dataType = get_type (model . additionalProperties , alternative_name =None , render_nullable =false , render_option =false , render_box =false , version =version ) %}
114
+ {% - if additionalProperties != false %}
115
+ {% - set dataType = get_type (additionalProperties , alternative_name =None , render_nullable =false , render_option =false , render_box =false , version =version ) %}
115
116
let mut additional_properties: std::collections::BTreeMap<String , {{ dataType }} > = std::collections::BTreeMap::new();
116
117
{% - endif %}
117
118
let mut _unparsed = false;
@@ -143,10 +144,12 @@ impl<'de> Deserialize<'de> for {{ name }} {
143
144
},
144
145
{% - endfor %}
145
146
& _ => {
146
- {% - if model . additionalProperties is defined and model . additionalProperties != false %}
147
+ {% - if additionalProperties != false %}
147
148
if let Ok(value) = serde_json::from_value(v.clone()) {
148
149
additional_properties.insert(k, value);
149
150
}
151
+ {% else %}
152
+ return Err(serde::de::Error::custom("Additional properties not allowed"));
150
153
{% - endif %}
151
154
},
152
155
}
@@ -173,7 +176,7 @@ impl<'de> Deserialize<'de> for {{ name }} {
173
176
{% - set propertyName = attr |variable_name %}
174
177
{{ propertyName }},
175
178
{% - endfor %}
176
- {% - if model . additionalProperties is defined and model . additionalProperties != false %}
179
+ {% - if additionalProperties != false %}
177
180
additional_properties,
178
181
{% - endif %}
179
182
_unparsed,
0 commit comments