diff --git a/modules/openapi-generator/src/main/resources/elixir/deserializer.ex.mustache b/modules/openapi-generator/src/main/resources/elixir/deserializer.ex.mustache index 91e6414afda6..a5c4da88658e 100644 --- a/modules/openapi-generator/src/main/resources/elixir/deserializer.ex.mustache +++ b/modules/openapi-generator/src/main/resources/elixir/deserializer.ex.mustache @@ -19,13 +19,18 @@ defmodule {{moduleName}}.Deserializer do end def deserialize(model, field, :map, mod, options) do - model - |> Map.update!( - field, - &Map.new(&1, fn {key, val} -> - {key, Poison.Decode.decode(val, Keyword.merge(options, [as: struct(mod)]))} - end) - ) + maybe_transform_map = fn + nil -> + nil + + existing_value -> + Map.new(existing_value, fn + {key, val} -> + {key, Poison.Decode.decode(val, Keyword.merge(options, as: struct(mod)))} + end) + end + + Map.update!(model, field, maybe_transform_map) end def deserialize(model, field, :date, _, _options) do diff --git a/samples/client/petstore/elixir/lib/openapi_petstore/deserializer.ex b/samples/client/petstore/elixir/lib/openapi_petstore/deserializer.ex index b92156475047..bdd072f0897e 100644 --- a/samples/client/petstore/elixir/lib/openapi_petstore/deserializer.ex +++ b/samples/client/petstore/elixir/lib/openapi_petstore/deserializer.ex @@ -21,13 +21,18 @@ defmodule OpenapiPetstore.Deserializer do end def deserialize(model, field, :map, mod, options) do - model - |> Map.update!( - field, - &Map.new(&1, fn {key, val} -> - {key, Poison.Decode.decode(val, Keyword.merge(options, [as: struct(mod)]))} - end) - ) + maybe_transform_map = fn + nil -> + nil + + existing_value -> + Map.new(existing_value, fn + {key, val} -> + {key, Poison.Decode.decode(val, Keyword.merge(options, as: struct(mod)))} + end) + end + + Map.update!(model, field, maybe_transform_map) end def deserialize(model, field, :date, _, _options) do