void UVaRestJsonObject::SetArrayField(const FString& FieldName, const TArray<UVaRestJsonValue*>& InArray) { if (!JsonObj.IsValid()) { return; } TArray< TSharedPtr<FJsonValue> > ValArray; // Process input array and COPY original values for (auto InVal : InArray) { TSharedPtr<FJsonValue> JsonVal = InVal->GetRootValue(); switch (InVal->GetType()) { case EVaJson::None: break; case EVaJson::Null: ValArray.Add(MakeShareable(new FJsonValueNull())); break; case EVaJson::String: ValArray.Add(MakeShareable(new FJsonValueString(JsonVal->AsString()))); break; case EVaJson::Number: ValArray.Add(MakeShareable(new FJsonValueNumber(JsonVal->AsNumber()))); break; case EVaJson::Boolean: ValArray.Add(MakeShareable(new FJsonValueBoolean(JsonVal->AsBool()))); break; case EVaJson::Array: ValArray.Add(MakeShareable(new FJsonValueArray(JsonVal->AsArray()))); break; case EVaJson::Object: ValArray.Add(MakeShareable(new FJsonValueObject(JsonVal->AsObject()))); break; default: break; } } JsonObj->SetArrayField(FieldName, ValArray); }