Parse nested json to TMap in Unreal Engine 4

TMap<FString, FString> URequestManagerBase::DeSerializeJsonContent(const FString& JsonContent)
{
	TMap<FString, FString> ReturnMap;

	TSharedPtr<FJsonObject> JsonObject;
	TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(JsonContent);

	if (FJsonSerializer::Deserialize(Reader, JsonObject) && JsonObject.IsValid())
	{
		for (const TPair<FString, TSharedPtr<FJsonValue>>& Pair : JsonObject->Values)
		{
			CheckJsonType(Pair, &ReturnMap);
		}
	}
	return ReturnMap;
}
void URequestManagerBase::CheckJsonType(TPair<FString, TSharedPtr<FJsonValue>> Json, TMap<FString, FString>* Map)
{
	if (Json.Value->Type == EJson::Object || Json.Value->Type == EJson::Array)
	{
		if (Json.Value->Type == EJson::Object)
		{
			for (const TPair<FString, TSharedPtr<FJsonValue>>& Pair : Json.Value->AsObject()->Values)
			{
				CheckJsonType(Pair, Map);
			}
		}
		else if (Json.Value->Type == EJson::Array)
		{
			int32 Index = 1;
			for (const auto& ArrayValue : Json.Value->AsArray())
			{
				Map->Add(Json.Key + "_" + FString::FromInt(Index), ArrayValue->AsString());
				Index++;
			}
		}
	}
	else 
	{
		Map->Add(Json.Key, Json.Value->AsString());
	}
}