diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/helpers-header.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/helpers-header.mustache index d551cd8969a..657664ba292 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/helpers-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/helpers-header.mustache @@ -298,6 +298,17 @@ inline void WriteJsonValue(JsonWriter& Writer, const TMap& Value) Writer->WriteObjectEnd(); } +template +inline void WriteJsonValue(JsonWriter& Writer, const TSet& Value) +{ + Writer->WriteArrayStart(); + for (const auto& Element : Value) + { + WriteJsonValue(Writer, Element); + } + Writer->WriteArrayEnd(); +} + ////////////////////////////////////////////////////////////////////////// inline bool TryGetJsonValue(const TSharedPtr& JsonValue, FString& Value) @@ -465,6 +476,26 @@ inline bool TryGetJsonValue(const TSharedPtr& JsonObject, const FSt return true; } +template +inline bool TryGetJsonValue(const TSharedPtr& JsonValue, TSet& ArrayValue) +{ + const TArray>* JsonArray; + if (JsonValue->TryGetArray(JsonArray)) + { + bool ParseSuccess = true; + const int32 Count = JsonArray->Num(); + ArrayValue.Reset(); + for (int i = 0; i < Count; i++) + { + T TmpValue; + ParseSuccess &= TryGetJsonValue((*JsonArray)[i], TmpValue); + ArrayValue.Emplace(MoveTemp(TmpValue)); + } + return ParseSuccess; + } + return false; +} + {{#cppNamespaceDeclarations}} } {{/cppNamespaceDeclarations}} diff --git a/samples/client/petstore/cpp-ue4/Public/OpenAPIHelpers.h b/samples/client/petstore/cpp-ue4/Public/OpenAPIHelpers.h index 589f709c77f..d1dce505e6c 100644 --- a/samples/client/petstore/cpp-ue4/Public/OpenAPIHelpers.h +++ b/samples/client/petstore/cpp-ue4/Public/OpenAPIHelpers.h @@ -307,6 +307,17 @@ inline void WriteJsonValue(JsonWriter& Writer, const TMap& Value) Writer->WriteObjectEnd(); } +template +inline void WriteJsonValue(JsonWriter& Writer, const TSet& Value) +{ + Writer->WriteArrayStart(); + for (const auto& Element : Value) + { + WriteJsonValue(Writer, Element); + } + Writer->WriteArrayEnd(); +} + ////////////////////////////////////////////////////////////////////////// inline bool TryGetJsonValue(const TSharedPtr& JsonValue, FString& Value) @@ -474,4 +485,24 @@ inline bool TryGetJsonValue(const TSharedPtr& JsonObject, const FSt return true; } +template +inline bool TryGetJsonValue(const TSharedPtr& JsonValue, TSet& ArrayValue) +{ + const TArray>* JsonArray; + if (JsonValue->TryGetArray(JsonArray)) + { + bool ParseSuccess = true; + const int32 Count = JsonArray->Num(); + ArrayValue.Reset(); + for (int i = 0; i < Count; i++) + { + T TmpValue; + ParseSuccess &= TryGetJsonValue((*JsonArray)[i], TmpValue); + ArrayValue.Emplace(MoveTemp(TmpValue)); + } + return ParseSuccess; + } + return false; +} + }