A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
DlgJsonParser.h
Go to the documentation of this file.
1// Copyright Csaba Molnar, Daniel Butum. All Rights Reserved.
2#pragma once
3
4#include "CoreTypes.h"
5#include "Logging/LogMacros.h"
6#include "Dom/JsonValue.h"
7#include "Dom/JsonObject.h"
8
9#include "IDlgParser.h"
10#include "NYReflectionTypes.h"
11
13
14
19class DLGSYSTEM_API FDlgJsonParser : public IDlgParser
20{
34public:
36
37 FDlgJsonParser(const FString& FilePath)
38 {
39 InitializeParser(FilePath);
40 }
41
42 // IDlgParser Interface
43 void InitializeParser(const FString& FilePath) override;
44 void InitializeParserFromString(const FString& Text) override;
45 bool IsValidFile() const override { return bIsValidFile; }
46 void ReadAllProperty(const UStruct* ReferenceClass, void* TargetObject, UObject* DefaultObjectOuter = nullptr) override;
47
48
49private: // JSON -> UStruct
50
55 bool ConvertScalarJsonValueToProperty(const TSharedPtr<FJsonValue>& JsonValue, FNYProperty* Property, void* ContainerPtr, void* ValuePtr);
56
66 bool JsonValueToProperty(const TSharedPtr<FJsonValue>& JsonValue, FNYProperty* Property, void* ContainerPtr, void* ValuePtr);
67
77 bool JsonAttributesToUStruct(const TMap<FString, TSharedPtr<FJsonValue>>& JsonAttributes,
78 const UStruct* StructDefinition, void* ContainerPtr);
79
89 bool JsonObjectToUStruct(const TSharedRef<const FJsonObject>& JsonObject, const UStruct* StructDefinition, void* ContainerPtr)
90 {
91 return JsonAttributesToUStruct(JsonObject->Values, StructDefinition, ContainerPtr);
92 }
93
102 bool JsonObjectStringToUStruct(const UStruct* StructDefinition, void* ContainerPtr);
103
104private:
105 FString JsonString;
106 FString FileName;
107 bool bIsValidFile = false;
108
110 UObject* DefaultObjectOuter = nullptr;
111
113 static constexpr int64 CheckFlags = ~CPF_ParmFlags;
114};
DECLARE_LOG_CATEGORY_EXTERN(LogDlgJsonParser, All, All)
UProperty FNYProperty
The DlgJsonParser class mostly adapted for Dialogues, copied from FJsonObjectConverter See IDlgParser...
FDlgJsonParser(const FString &FilePath)
bool IsValidFile() const override
bool JsonObjectToUStruct(const TSharedRef< const FJsonObject > &JsonObject, const UStruct *StructDefinition, void *ContainerPtr)
virtual void InitializeParserFromString(const FString &Text)
Definition IDlgParser.h:18
virtual void ReadAllProperty(const UStruct *ReferenceClass, void *TargetObject, UObject *DefaultObjectOuter=nullptr)=0
virtual void InitializeParser(const FString &FilePath)=0