-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMyBlueprintFunctionLibrary.cpp
More file actions
83 lines (67 loc) · 2.55 KB
/
MyBlueprintFunctionLibrary.cpp
File metadata and controls
83 lines (67 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// Copyright Marcelo Coelho
#include "MyBlueprintFunctionLibrary.h"
#include "JsonObjectConverter.h"
#include "GenericPlatform/GenericPlatformFile.h"
#include "HAL/PlatformFileManager.h"
#include "Misc/FileHelper.h"
#include "Serialization/JsonSerializer.h"
FString UMyBlueprintFunctionLibrary::ReadStringFromFile(FString FilePath, bool& bOutSuccess, FString& OutInfoMessage)
{
if (!FPlatformFileManager::Get().GetPlatformFile().FileExists(*FilePath))
{
bOutSuccess = false;
OutInfoMessage = FString::Printf(TEXT("Failed to read file. File does not exist"));
return "";
}
FString RetString = "";
if (!FFileHelper::LoadFileToString(RetString, *FilePath))
{
bOutSuccess = false;
OutInfoMessage = FString::Printf(TEXT("Failed to read file. Unable to read file %s"), *FilePath);
return "";
}
bOutSuccess = true;
OutInfoMessage = FString::Printf(TEXT("File read successfully"));
return RetString;
}
FAqTestStruct UMyBlueprintFunctionLibrary::ReadStructFromJsonFile(FString JsonFilePath, bool& bOutSuccess,
FString& OutInfoMessage)
{
TSharedPtr<FJsonObject> JsonObject = ReadJson(JsonFilePath, bOutSuccess, OutInfoMessage);
if (!bOutSuccess)
{
UE_LOG(LogTemp, Warning, TEXT("No bOutSuccess: %s"), *JsonFilePath);
return FAqTestStruct();
}
FAqTestStruct RetAqTestStruct;
if (!FJsonObjectConverter::JsonObjectToUStruct<FAqTestStruct>(JsonObject.ToSharedRef(), &RetAqTestStruct))
{
bOutSuccess = false;
OutInfoMessage = FString::Printf(TEXT("Unable to convert Json file %s"), *JsonFilePath);
UE_LOG(LogTemp, Warning, TEXT("Unable to convert Json file: %s"), *OutInfoMessage);
return FAqTestStruct();
}
bOutSuccess = true;
OutInfoMessage = FString::Printf(TEXT("Json file read successfully %s"), *JsonFilePath);
UE_LOG(LogTemp, Warning, TEXT("Json from inside function: %s"), *RetAqTestStruct.MyString);
return RetAqTestStruct;
}
TSharedPtr<FJsonObject> UMyBlueprintFunctionLibrary::ReadJson(FString JsonFilePath, bool& bOutSuccess,
FString& OutInfoMessage)
{
FString JsonString = ReadStringFromFile(JsonFilePath, bOutSuccess, OutInfoMessage);
if (!bOutSuccess)
{
return nullptr;
}
TSharedPtr<FJsonObject> RetJsonObject;
if (!FJsonSerializer::Deserialize(TJsonReaderFactory<>::Create(JsonString), RetJsonObject))
{
bOutSuccess = false;
OutInfoMessage = FString::Printf(TEXT("Failed to read file. Unable to read file %s"), *JsonString);
return nullptr;
}
bOutSuccess = true;
OutInfoMessage = FString::Printf(TEXT("Read Json Succeeded %s"), *JsonFilePath);
return RetJsonObject;
}