@@ -126,7 +126,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
126126 return json.dumps(self.to_dict())
127127
128128 @classmethod
129- def from_json(cls, json_str: str) -> { {^hasChildren} }{ {{classname} }}{ {/hasChildren} }{ {#hasChildren} }{ {#discriminator} }Union( { {#children} }{ {{classname} }}{ {^-last} }, { {/-last} }{ {/children} }) { {/discriminator} }{ {^discriminator} }{ {{classname} }}{ {/discriminator} }{ {/hasChildren} }:
129+ def from_json(cls, json_str: str) -> { {^hasChildren} }{ {{classname} }}{ {/hasChildren} }{ {#hasChildren} }{ {#discriminator} }Union[ { {#children} }{ {{classname} }}{ {^-last} }, { {/-last} }{ {/children} }] { {/discriminator} }{ {^discriminator} }{ {{classname} }}{ {/discriminator} }{ {/hasChildren} }:
130130 """Create an instance of { {{classname} }} from a JSON string"""
131131 return cls.from_dict(json.loads(json_str))
132132
@@ -145,8 +145,9 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
145145 { {#allVars} }
146146 { {#isContainer} }
147147 { {#isArray} }
148- { {#items.isArray } }
148+ { {#items.isContainer } }
149149 { {^items.items.isPrimitiveType} }
150+ { {#items.isArray} }
150151 # override the default output from pydantic by calling `to_dict()` of each item in { {{name} }} (list of list)
151152 _items = []
152153 if self.{ {{name} }}:
@@ -156,9 +157,21 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
156157 [_inner_item.to_dict() for _inner_item in _item if _inner_item is not None]
157158 )
158159 _dict['{ {{baseName} }}'] = _items
159- { {/items.items.isPrimitiveType} }
160160 { {/items.isArray} }
161- { {^items.isArray} }
161+ { {#items.isMap} }
162+ # override the default output from pydantic by calling `to_dict()` of each item in { {{name} }} (list of map)
163+ _items = []
164+ if self.{ {{name} }}:
165+ for _item in self.{ {{name} }}:
166+ if _item:
167+ _items.append(
168+ { _inner_key: _inner_value.to_dict() for _inner_key, _inner_value in _item.items() if _inner_value is not None}
169+ )
170+ _dict['{ {{baseName} }}'] = _items
171+ { {/items.isMap} }
172+ { {/items.items.isPrimitiveType} }
173+ { {/items.isContainer} }
174+ { {^items.isContainer} }
162175 { {^items.isPrimitiveType} }
163176 { {^items.isEnumOrRef} }
164177 # override the default output from pydantic by calling `to_dict()` of each item in { {{name} }} (list)
@@ -170,11 +183,12 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
170183 _dict['{ {{baseName} }}'] = _items
171184 { {/items.isEnumOrRef} }
172185 { {/items.isPrimitiveType} }
173- { {/items.isArray } }
186+ { {/items.isContainer } }
174187 { {/isArray} }
175188 { {#isMap} }
176- { {#items.isArray } }
189+ { {#items.isContainer } }
177190 { {^items.items.isPrimitiveType} }
191+ { {#items.isArray} }
178192 # override the default output from pydantic by calling `to_dict()` of each value in { {{name} }} (dict of array)
179193 _field_dict_of_array = { }
180194 if self.{ {{name} }}:
@@ -184,9 +198,21 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
184198 _item.to_dict() for _item in self.{ {{name} }}[_key]
185199 ]
186200 _dict['{ {{baseName} }}'] = _field_dict_of_array
187- { {/items.items.isPrimitiveType} }
188201 { {/items.isArray} }
189- { {^items.isArray} }
202+ { {#items.isMap} }
203+ # override the default output from pydantic by calling `to_dict()` of each value in { {{name} }} (dict of dict)
204+ _field_dict_of_dict = { }
205+ if self.{ {{name} }}:
206+ for _key, _value in self.{ {{name} }}.items():
207+ if _value is not None:
208+ _field_dict_of_dict[_key] = {
209+ _inner_key: _inner_value.to_dict() for _inner_key, _inner_value in _value.items() if _inner_value is not None
210+ }
211+ _dict['{ {{baseName} }}'] = _field_dict_of_dict
212+ { {/items.isMap} }
213+ { {/items.items.isPrimitiveType} }
214+ { {/items.isContainer} }
215+ { {^items.isContainer} }
190216 { {^items.isPrimitiveType} }
191217 { {^items.isEnumOrRef} }
192218 # override the default output from pydantic by calling `to_dict()` of each value in { {{name} }} (dict)
@@ -198,7 +224,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
198224 _dict['{ {{baseName} }}'] = _field_dict
199225 { {/items.isEnumOrRef} }
200226 { {/items.isPrimitiveType} }
201- { {/items.isArray } }
227+ { {/items.isContainer } }
202228 { {/isMap} }
203229 { {/isContainer} }
204230 { {^isContainer} }
@@ -230,7 +256,7 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
230256 return _dict
231257
232258 @classmethod
233- def from_dict(cls, obj: dict) -> { {^hasChildren} }{ {{classname} }}{ {/hasChildren} }{ {#hasChildren} }{ {#discriminator} }Union( { {#children} }{ {{classname} }}{ {^-last} }, { {/-last} }{ {/children} }) { {/discriminator} }{ {^discriminator} }{ {{classname} }}{ {/discriminator} }{ {/hasChildren} }:
259+ def from_dict(cls, obj: dict) -> { {^hasChildren} }{ {{classname} }}{ {/hasChildren} }{ {#hasChildren} }{ {#discriminator} }Union[ { {#children} }{ {{classname} }}{ {^-last} }, { {/-last} }{ {/children} }] { {/discriminator} }{ {^discriminator} }{ {{classname} }}{ {/discriminator} }{ {/hasChildren} }:
234260 """Create an instance of { {{classname} }} from a dict"""
235261 { {#hasChildren} }
236262 { {#discriminator} }
@@ -265,18 +291,26 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
265291 {{#allVars} }
266292 { {#isContainer} }
267293 { {#isArray} }
268- { {#items.isArray } }
294+ { {#items.isContainer } }
269295 { {#items.items.isPrimitiveType} }
270296 "{ {{name} }}": obj.get("{ {{baseName} }}"){ {^-last} },{ {/-last} }
271297 { {/items.items.isPrimitiveType} }
272298 { {^items.items.isPrimitiveType} }
299+ { {#items.isArray} }
273300 "{ {{name} }}": [
274301 [{ {{items.items.dataType} }}.from_dict(_inner_item) for _inner_item in _item]
275302 for _item in obj.get("{ {{baseName} }}")
276303 ] if obj.get("{ {{baseName} }}") is not None else None{ {^-last} },{ {/-last} }
277- { {/items.items.isPrimitiveType} }
278304 { {/items.isArray} }
279- { {^items.isArray} }
305+ { {#items.isMap} }
306+ "{ {{name} }}": [
307+ { _inner_key: {{{items.items.dataType} }}.from_dict(_inner_value) for _inner_key, _inner_value in _item.items()}
308+ for _item in obj.get("{ {{baseName} }}")
309+ ] if obj.get("{ {{baseName} }}") is not None else None{ {^-last} },{ {/-last} }
310+ { {/items.isMap} }
311+ { {/items.items.isPrimitiveType} }
312+ { {/items.isContainer} }
313+ { {^items.isContainer} }
280314 { {^items.isPrimitiveType} }
281315 { {#items.isEnumOrRef} }
282316 "{ {{name} }}": obj.get("{ {{baseName} }}"){ {^-last} },{ {/-last} }
@@ -288,48 +322,39 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
288322 { {#items.isPrimitiveType} }
289323 "{ {{name} }}": obj.get("{ {{baseName} }}"){ {^-last} },{ {/-last} }
290324 { {/items.isPrimitiveType} }
291- { {/items.isArray } }
325+ { {/items.isContainer } }
292326 { {/isArray} }
293327 { {#isMap} }
294328 { {^items.isPrimitiveType} }
295329 { {^items.isEnumOrRef} }
296330 { {#items.isContainer} }
297331 { {#items.isMap} }
298- "{ {{name} }}": dict(
299- (_k, dict(
300- (_ik, { {{items.items.dataType} }}.from_dict(_iv))
301- for _ik, _iv in _v.items()
302- )
303- if _v is not None
304- else None
305- )
306- for _k, _v in obj.get("{ {{baseName} }}").items()
307- )
332+ "{ {{name} }}": {
333+ _k: {_ik: {{{items.items.dataType} }}.from_dict(_iv) for _ik, _iv in _v.items()} if _v is not None else None
334+ for _k, _v in obj["{ {{baseName} }}"].items()
335+ }
308336 if obj.get("{ {{baseName} }}") is not None
309337 else None{ {^-last} },{ {/-last} }
310338 { {/items.isMap} }
311339 { {#items.isArray} }
312- "{ {{name} }}": dict(
313- (_k,
314- [{ {{items.items.dataType} }}.from_dict(_item) for _item in _v]
315- if _v is not None
316- else None
317- )
318- for _k, _v in obj.get("{ {{baseName} }}").items()
319- ){ {^-last} },{ {/-last} }
340+ "{ {{name} }}": {
341+ _k: [{{{items.items.dataType} }}.from_dict(_item) for _item in _v] if _v is not None else None
342+ for _k, _v in obj["{ {{baseName} }}"].items()
343+ }
344+ if obj.get("{ {{baseName} }}") is not None
345+ else None{ {^-last} },{ {/-last} }
320346 { {/items.isArray} }
321347 { {/items.isContainer} }
322348 { {^items.isContainer} }
323- "{ {{name} }}": dict(
324- (_k, { {{items.dataType} }}.from_dict(_v))
325- for _k, _v in obj.get("{ {{baseName} }}").items()
326- )
349+ "{ {{name} }}": {
350+ _k: {{{items.dataType} }}.from_dict(_v) for _k, _v in obj["{ {{baseName} }}"].items()
351+ }
327352 if obj.get("{ {{baseName} }}") is not None
328353 else None{ {^-last} },{ {/-last} }
329354 { {/items.isContainer} }
330355 { {/items.isEnumOrRef} }
331356 { {#items.isEnumOrRef} }
332- "{ {{name} }}": dict((_k, _v) for _k, _v in obj.get("{ {{baseName} }}").items() ){ {^-last} },{ {/-last} }
357+ "{ {{name} }}": obj.get("{ {{baseName} }}"){ {^-last} },{ {/-last} }
333358 { {/items.isEnumOrRef} }
334359 { {/items.isPrimitiveType} }
335360 { {#items.isPrimitiveType} }
0 commit comments