UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
JsonSerializerMacros.h File Reference

Go to the source code of this file.

Macros

#define BEGIN_JSON_SERIALIZER
 
#define END_JSON_SERIALIZER
 
#define JSON_SERIALIZE(JsonName, JsonValue)    Serializer.Serialize(TEXTVIEW(JsonName), JsonValue)
 
#define JSON_SERIALIZE_NAME(JsonName, JsonValue)
 
#define JSON_SERIALIZE_WITHDEFAULT(JsonName, JsonValue, DefaultJsonValue)
 
#define JSON_SERIALIZE_OPTIONAL(JsonName, OptionalJsonValue)
 
#define JSON_SERIALIZE_OPTIONAL_MAP(JsonName, JsonMap)
 
#define JSON_SERIALIZE_OPTIONAL_ARRAY(JsonName, JsonArray)
 
#define JSON_SERIALIZE_ARRAY(JsonName, JsonArray)    Serializer.SerializeArray(TEXTVIEW(JsonName), JsonArray)
 
#define JSON_SERIALIZE_ARRAY_WITHDEFAULT(JsonName, JsonArray, DefaultArray)
 
#define JSON_SERIALIZE_OBJECT_WITHDEFAULT(JsonName, JsonObject, DefaultObject)
 
#define JSON_SERIALIZE_MAP(JsonName, JsonMap)    Serializer.SerializeMap(TEXTVIEW(JsonName), JsonMap)
 
#define JSON_SERIALIZE_SIMPLECOPY(JsonMap)    Serializer.SerializeSimpleMap(JsonMap)
 
#define JSON_SERIALIZE_MAP_SAFE(JsonName, JsonMap)    Serializer.SerializeMapSafe(TEXTVIEW(JsonName), JsonMap)
 
#define JSON_SERIALIZE_RAW_JSON_STRING(JsonName, JsonValue)
 
#define JSON_SERIALIZE_ARRAY_SERIALIZABLE(JsonName, JsonArray, ElementType)
 
#define JSON_SERIALIZE_ARRAY_SERIALIZABLE_WITHDEFAULT(JsonName, JsonArray, ElementType, DefaultArray)
 
#define JSON_SERIALIZE_OPTIONAL_ARRAY_SERIALIZABLE(JsonName, OptionalJsonArray, ElementType)
 
#define JSON_SERIALIZE_MAP_SERIALIZABLE(JsonName, JsonMap, ElementType)
 
#define JSON_SERIALIZE_MAP_ARRAY_SERIALIZABLE(JsonName, JsonMap, ElementType)
 
#define JSON_SERIALIZE_MEMBERS_OF(JsonValue)    JsonValue.Serialize(Serializer, /*bIsFlatObject*/true)
 
#define JSON_SERIALIZE_SERIALIZABLE(JsonName, JsonValue)   UE_DEPRECATED_MACRO(5.6, "JSON_SERIALIZE_SERIALIZABLE has been deprecated, use JSON_SERIALIZE_MEMBERS_OF instead") JSON_SERIALIZE_MEMBERS_OF(JsonValue)
 
#define JSON_SERIALIZE_OBJECT_SERIALIZABLE(JsonName, JsonSerializableObject)
 
#define JSON_SERIALIZE_OBJECT_SERIALIZABLE_WITHDEFAULT(JsonName, JsonSerializableObject, JsonSerializableObjectDefault)
 
#define JSON_SERIALIZE_OPTIONAL_OBJECT_SERIALIZABLE(JsonName, JsonSerializableObject)
 
#define JSON_SERIALIZE_DATETIME_UNIX_TIMESTAMP(JsonName, JsonDateTime)
 
#define JSON_SERIALIZE_DATETIME_UNIX_TIMESTAMP_MILLISECONDS(JsonName, JsonDateTime)
 
#define JSON_SERIALIZE_ENUM(JsonName, JsonEnum)
 
#define JSON_SERIALIZE_ENUM_ARRAY(JsonName, JsonArray, EnumType)
 
#define JSON_SERIALIZE_PRIVATE_VARIANT_BEGIN(JsonName, JsonValue)
 
#define JSON_SERIALIZE_PRIVATE_VARIANT_END()
 
#define JSON_SERIALIZE_VARIANT_BEGIN(JsonName, JsonValue)
 
#define JSON_SERIALIZE_VARIANT_END()
 
#define JSON_SERIALIZE_OPTIONAL_VARIANT_BEGIN(JsonName, JsonValue)
 
#define JSON_SERIALIZE_OPTIONAL_VARIANT_END()
 
#define JSON_SERIALIZE_VARIANT_IFTYPE_SERIALIZABLE(TypeName, Type)
 

Macro Definition Documentation

◆ BEGIN_JSON_SERIALIZER

#define BEGIN_JSON_SERIALIZER
Value:
virtual void Serialize(FJsonSerializerBase& Serializer, bool bFlatObject) override \
{ \
if (!bFlatObject) { Serializer.StartObject(); }
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition JsonSerializerBase.h:12

Macros used to generate a serialization function for a class derived from FJsonSerializable

◆ END_JSON_SERIALIZER

#define END_JSON_SERIALIZER
Value:
if (!bFlatObject) { Serializer.EndObject(); } \
}

◆ JSON_SERIALIZE

#define JSON_SERIALIZE (   JsonName,
  JsonValue 
)     Serializer.Serialize(TEXTVIEW(JsonName), JsonValue)

◆ JSON_SERIALIZE_ARRAY

#define JSON_SERIALIZE_ARRAY (   JsonName,
  JsonArray 
)     Serializer.SerializeArray(TEXTVIEW(JsonName), JsonArray)

◆ JSON_SERIALIZE_ARRAY_SERIALIZABLE

#define JSON_SERIALIZE_ARRAY_SERIALIZABLE (   JsonName,
  JsonArray,
  ElementType 
)
Value:
if (Serializer.IsLoading()) \
{ \
if (Serializer.GetObject()->HasTypedField<EJson::Array>(TEXTVIEW(JsonName))) \
{ \
for (auto It = Serializer.GetObject()->GetArrayField(TEXTVIEW(JsonName)).CreateConstIterator(); It; ++It) \
{ \
ElementType& Obj = JsonArray.AddDefaulted_GetRef(); \
Obj.FromJson((*It)->AsObject()); \
} \
} \
} \
else \
{ \
Serializer.StartArray(TEXTVIEW(JsonName)); \
for (auto It = JsonArray.CreateIterator(); It; ++It) \
{ \
It->Serialize(Serializer, false); \
} \
Serializer.EndArray(); \
}
#define TEXTVIEW(str)
Definition StringView.h:553

◆ JSON_SERIALIZE_ARRAY_SERIALIZABLE_WITHDEFAULT

#define JSON_SERIALIZE_ARRAY_SERIALIZABLE_WITHDEFAULT (   JsonName,
  JsonArray,
  ElementType,
  DefaultArray 
)
Value:
if (Serializer.IsLoading()) \
{ \
if (Serializer.GetObject()->HasTypedField<EJson::Array>(TEXTVIEW(JsonName))) \
{ \
for (auto It = Serializer.GetObject()->GetArrayField(TEXTVIEW(JsonName)).CreateConstIterator(); It; ++It) \
{ \
ElementType& Obj = JsonArray.AddDefaulted_GetRef(); \
Obj.FromJson((*It)->AsObject()); \
} \
} \
else \
{ \
JsonArray = DefaultArray; \
} \
} \
else \
{ \
Serializer.StartArray(TEXTVIEW(JsonName)); \
for (auto It = JsonArray.CreateIterator(); It; ++It) \
{ \
It->Serialize(Serializer, false); \
} \
Serializer.EndArray(); \
}

◆ JSON_SERIALIZE_ARRAY_WITHDEFAULT

#define JSON_SERIALIZE_ARRAY_WITHDEFAULT (   JsonName,
  JsonArray,
  DefaultArray 
)
Value:
if (Serializer.IsLoading()) \
{ \
if (!Serializer.GetObject()->HasField(TEXTVIEW(JsonName))) \
{ \
JsonArray = DefaultArray; \
} \
} \
Serializer.SerializeArray(TEXTVIEW(JsonName), JsonArray);

◆ JSON_SERIALIZE_DATETIME_UNIX_TIMESTAMP

#define JSON_SERIALIZE_DATETIME_UNIX_TIMESTAMP (   JsonName,
  JsonDateTime 
)
Value:
if (Serializer.IsLoading()) \
{ \
Serializer.Serialize(TEXTVIEW(JsonName), UnixTimestampValue); \
} \
else \
{ \
int64 UnixTimestampValue = JsonDateTime.ToUnixTimestamp(); \
Serializer.Serialize(TEXTVIEW(JsonName), UnixTimestampValue); \
}
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
static FDateTime FromUnixTimestamp(int64 UnixTime)
Definition DateTime.h:620

◆ JSON_SERIALIZE_DATETIME_UNIX_TIMESTAMP_MILLISECONDS

#define JSON_SERIALIZE_DATETIME_UNIX_TIMESTAMP_MILLISECONDS (   JsonName,
  JsonDateTime 
)
Value:

◆ JSON_SERIALIZE_ENUM

#define JSON_SERIALIZE_ENUM (   JsonName,
  JsonEnum 
)
Value:
if (Serializer.IsLoading()) \
{ \
FString JsonTextValue; \
Serializer.Serialize(TEXTVIEW(JsonName), JsonTextValue); \
} \
else \
{ \
Serializer.Serialize(TEXTVIEW(JsonName), JsonTextValue); \
}
const TCHAR * LexToString(EAnalyticsRecordEventMode Mode)
Definition IAnalyticsProvider.cpp:5

◆ JSON_SERIALIZE_ENUM_ARRAY

#define JSON_SERIALIZE_ENUM_ARRAY (   JsonName,
  JsonArray,
  EnumType 
)
Value:
if (Serializer.IsLoading()) \
{ \
if (Serializer.GetObject()->HasTypedField<EJson::Array>(TEXTVIEW(JsonName))) \
{ \
EnumType EnumValue; \
for (auto It = Serializer.GetObject()->GetArrayField(TEXTVIEW(JsonName)).CreateConstIterator(); It; ++It) \
{ \
LexFromString(EnumValue, *(*It)->AsString()); \
JsonArray.Add(EnumValue); \
} \
} \
} \
else \
{ \
Serializer.StartArray(TEXTVIEW(JsonName)); \
for (EnumType& EnumValue : JsonArray) \
{ \
FString JsonTextValue = LexToString(EnumValue); \
Serializer.Serialize(TEXTVIEW(JsonName), JsonTextValue); \
} \
Serializer.EndArray(); \
}

◆ JSON_SERIALIZE_MAP

#define JSON_SERIALIZE_MAP (   JsonName,
  JsonMap 
)     Serializer.SerializeMap(TEXTVIEW(JsonName), JsonMap)

◆ JSON_SERIALIZE_MAP_ARRAY_SERIALIZABLE

#define JSON_SERIALIZE_MAP_ARRAY_SERIALIZABLE (   JsonName,
  JsonMap,
  ElementType 
)
Value:
if (Serializer.IsLoading()) \
{ \
if (Serializer.GetObject()->HasTypedField<EJson::Object>(TEXTVIEW(JsonName))) \
{ \
TSharedPtr<FJsonObject> JsonObj = Serializer.GetObject()->GetObjectField(TEXTVIEW(JsonName)); \
for (auto MapIt = JsonObj->Values.CreateConstIterator(); MapIt; ++MapIt) \
{ \
for (auto ArrayIt : MapIt.Value()->AsArray()) \
{ \
NewEntry.Add_GetRef(ElementType()).FromJson(ArrayIt->AsObject()); \
} \
JsonMap.Add(MapIt.Key(), NewEntry); \
} \
} \
} \
else \
{ \
Serializer.StartObject(TEXTVIEW(JsonName)); \
for (auto It = JsonMap.CreateIterator(); It; ++It) \
{ \
Serializer.StartArray(It.Key()); \
for (auto ArrayEntry : It.Value()) \
{ \
ArrayEntry.Serialize(Serializer, false); \
} \
Serializer.EndArray(); \
} \
Serializer.EndObject(); \
}
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Add_GetRef(ElementType &&Item) UE_LIFETIMEBOUND
Definition Array.h:2724
Definition SharedPointer.h:692

◆ JSON_SERIALIZE_MAP_SAFE

#define JSON_SERIALIZE_MAP_SAFE (   JsonName,
  JsonMap 
)     Serializer.SerializeMapSafe(TEXTVIEW(JsonName), JsonMap)

◆ JSON_SERIALIZE_MAP_SERIALIZABLE

#define JSON_SERIALIZE_MAP_SERIALIZABLE (   JsonName,
  JsonMap,
  ElementType 
)
Value:
if (Serializer.IsLoading()) \
{ \
if (Serializer.GetObject()->HasTypedField<EJson::Object>(TEXTVIEW(JsonName))) \
{ \
TSharedPtr<FJsonObject> JsonObj = Serializer.GetObject()->GetObjectField(TEXTVIEW(JsonName)); \
for (auto MapIt = JsonObj->Values.CreateConstIterator(); MapIt; ++MapIt) \
{ \
ElementType NewEntry; \
NewEntry.FromJson(MapIt.Value()->AsObject()); \
JsonMap.Add(MapIt.Key(), NewEntry); \
} \
} \
} \
else \
{ \
Serializer.StartObject(TEXTVIEW(JsonName)); \
for (auto It = JsonMap.CreateIterator(); It; ++It) \
{ \
Serializer.StartObject(MakeStringView(It.Key())); \
It.Value().Serialize(Serializer, true); \
Serializer.EndObject(); \
} \
Serializer.EndObject(); \
}
constexpr auto MakeStringView(const CharPtrOrRangeType &CharPtrOrRange UE_LIFETIMEBOUND) -> decltype(TStringView(CharPtrOrRange))
Definition StringView.h:508

◆ JSON_SERIALIZE_MEMBERS_OF

#define JSON_SERIALIZE_MEMBERS_OF (   JsonValue)     JsonValue.Serialize(Serializer, /*bIsFlatObject*/true)

◆ JSON_SERIALIZE_NAME

#define JSON_SERIALIZE_NAME (   JsonName,
  JsonValue 
)
Value:
if (Serializer.IsLoading()) \
{ \
FString NameStr; \
Serializer.Serialize(TEXTVIEW(JsonName), NameStr); \
JsonValue = FName(*NameStr); \
} \
else \
{ \
FString NameStr = JsonValue.ToString(); \
Serializer.Serialize(TEXTVIEW(JsonName), NameStr); \
}
Definition NameTypes.h:617

◆ JSON_SERIALIZE_OBJECT_SERIALIZABLE

#define JSON_SERIALIZE_OBJECT_SERIALIZABLE (   JsonName,
  JsonSerializableObject 
)
Value:
/* Process the JsonName field differently because it is an object */ \
if (Serializer.IsLoading()) \
{ \
/* Read in the value from the JsonName field */ \
if (Serializer.GetObject()->HasTypedField<EJson::Object>(TEXTVIEW(JsonName))) \
{ \
TSharedPtr<FJsonObject> JsonObj = Serializer.GetObject()->GetObjectField(TEXTVIEW(JsonName)); \
if (JsonObj.IsValid()) \
{ \
} \
} \
} \
else \
{ \
/* Write the value to the Name field */ \
Serializer.StartObject(TEXTVIEW(JsonName)); \
(JsonSerializableObject).Serialize(Serializer, true); \
Serializer.EndObject(); \
}

◆ JSON_SERIALIZE_OBJECT_SERIALIZABLE_WITHDEFAULT

#define JSON_SERIALIZE_OBJECT_SERIALIZABLE_WITHDEFAULT (   JsonName,
  JsonSerializableObject,
  JsonSerializableObjectDefault 
)
Value:
/* Process the JsonName field differently because it is an object */ \
if (Serializer.IsLoading()) \
{ \
/* Read in the value from the JsonName field */ \
if (Serializer.GetObject()->HasTypedField<EJson::Object>(TEXTVIEW(JsonName))) \
{ \
TSharedPtr<FJsonObject> JsonObj = Serializer.GetObject()->GetObjectField(TEXTVIEW(JsonName)); \
if (JsonObj.IsValid()) \
{ \
} \
} \
else \
{ \
} \
} \
else \
{ \
/* Write the value to the Name field */ \
Serializer.StartObject(TEXTVIEW(JsonName)); \
(JsonSerializableObject).Serialize(Serializer, true); \
Serializer.EndObject(); \
}

◆ JSON_SERIALIZE_OBJECT_WITHDEFAULT

#define JSON_SERIALIZE_OBJECT_WITHDEFAULT (   JsonName,
  JsonObject,
  DefaultObject 
)
Value:
if (Serializer.IsLoading()) \
{ \
if (!Serializer.GetObject()->HasField(TEXTVIEW(JsonName))) \
{ \
JsonObject = DefaultObject; \
} \
} \
Serializer.SerializeArray(TEXTVIEW(JsonName), JsonArray);

◆ JSON_SERIALIZE_OPTIONAL

#define JSON_SERIALIZE_OPTIONAL (   JsonName,
  OptionalJsonValue 
)
Value:
if (Serializer.IsLoading()) \
{ \
if (Serializer.GetObject()->HasField(TEXTVIEW(JsonName))) \
{ \
Serializer.Serialize(TEXTVIEW(JsonName), OptionalJsonValue.Emplace()); \
} \
} \
else \
{ \
{ \
Serializer.Serialize(TEXTVIEW(JsonName), OptionalJsonValue.GetValue()); \
} \
}

◆ JSON_SERIALIZE_OPTIONAL_ARRAY

#define JSON_SERIALIZE_OPTIONAL_ARRAY (   JsonName,
  JsonArray 
)
Value:
if (Serializer.IsLoading() && !JsonArray.IsSet() && Serializer.GetObject().IsValid() && Serializer.GetObject()->HasTypedField<EJson::Array>(TEXTVIEW(JsonName))) \
{ \
JsonArray.Emplace(); \
} \
if (JsonArray.IsSet()) \
{ \
Serializer.SerializeArray(TEXTVIEW(JsonName), JsonArray.GetValue()); \
}

◆ JSON_SERIALIZE_OPTIONAL_ARRAY_SERIALIZABLE

#define JSON_SERIALIZE_OPTIONAL_ARRAY_SERIALIZABLE (   JsonName,
  OptionalJsonArray,
  ElementType 
)
Value:
if (Serializer.IsLoading()) \
{ \
if (Serializer.GetObject()->HasTypedField<EJson::Array>(TEXTVIEW(JsonName))) \
{ \
for (auto It = Serializer.GetObject()->GetArrayField(TEXTVIEW(JsonName)).CreateConstIterator(); It; ++It) \
{ \
ElementType& Obj = JsonArray.AddDefaulted_GetRef(); \
Obj.FromJson((*It)->AsObject()); \
} \
} \
} \
else \
{ \
{ \
Serializer.StartArray(TEXTVIEW(JsonName)); \
for (auto It = OptionalJsonArray->CreateIterator(); It; ++It) \
{ \
It->Serialize(Serializer, false); \
} \
Serializer.EndArray(); \
} \
}
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
ElementType & AddDefaulted_GetRef() UE_LIFETIMEBOUND
Definition Array.h:2815

◆ JSON_SERIALIZE_OPTIONAL_MAP

#define JSON_SERIALIZE_OPTIONAL_MAP (   JsonName,
  JsonMap 
)
Value:
if (Serializer.IsLoading() && !JsonMap.IsSet() && Serializer.GetObject().IsValid() && Serializer.GetObject()->HasTypedField<EJson::Object>(TEXTVIEW(JsonName))) \
{ \
JsonMap.Emplace(); \
} \
if (JsonMap.IsSet()) \
{ \
Serializer.SerializeMap(TEXTVIEW(JsonName), JsonMap.GetValue()); \
}

◆ JSON_SERIALIZE_OPTIONAL_OBJECT_SERIALIZABLE

#define JSON_SERIALIZE_OPTIONAL_OBJECT_SERIALIZABLE (   JsonName,
  JsonSerializableObject 
)
Value:
if (Serializer.IsLoading()) \
{ \
using ObjectType = TRemoveReference<decltype(JsonSerializableObject.GetValue())>::Type; \
if (Serializer.GetObject()->HasTypedField<EJson::Object>(TEXTVIEW(JsonName))) \
{ \
TSharedPtr<FJsonObject> JsonObj = Serializer.GetObject()->GetObjectField(TEXTVIEW(JsonName)); \
if (JsonObj.IsValid()) \
{ \
JsonSerializableObject = ObjectType{}; \
JsonSerializableObject.GetValue().FromJson(JsonObj); \
} \
} \
} \
else \
{ \
{ \
Serializer.StartObject(TEXTVIEW(JsonName)); \
(JsonSerializableObject.GetValue()).Serialize(Serializer, true); \
Serializer.EndObject(); \
} \
}
Definition RemoveReference.h:10

◆ JSON_SERIALIZE_OPTIONAL_VARIANT_BEGIN

#define JSON_SERIALIZE_OPTIONAL_VARIANT_BEGIN (   JsonName,
  JsonValue 
)
Value:
if (true) \
{ \
if (Serializer.IsLoading()) \
{ \
if (Serializer.GetObject()->HasTypedField<EJson::Object>(TEXTVIEW(JsonName))) \
{ \
JsonValue.Emplace(); \
} \
} \
auto* VariantValue = JsonValue.IsSet() ? &JsonValue.GetValue() : nullptr; \

Macros for begin/end of TOptional<TVariant<...>> value, insert JSON_SERIALIZE_VARIANT_IFTYPE_SERIALIZABLE in between BEGIN/END pair

◆ JSON_SERIALIZE_OPTIONAL_VARIANT_END

#define JSON_SERIALIZE_OPTIONAL_VARIANT_END ( )
Value:
}
#define JSON_SERIALIZE_PRIVATE_VARIANT_END()
Definition JsonSerializerMacros.h:461

◆ JSON_SERIALIZE_PRIVATE_VARIANT_BEGIN

#define JSON_SERIALIZE_PRIVATE_VARIANT_BEGIN (   JsonName,
  JsonValue 
)
Value:
FString VariantTypeStr; \
if (VariantValue != nullptr) \
{ \
if (Serializer.IsLoading()) \
{ \
if (Serializer.GetObject()->HasTypedField<EJson::Object>(TEXTVIEW(JsonName))) \
{ \
VariantJsonObj = Serializer.GetObject()->GetObjectField(TEXTVIEW(JsonName)); \
if (VariantJsonObj.IsValid()) \
{ \
VariantTypeStr = VariantJsonObj->GetStringField(TEXTVIEW("Type")); \
if (VariantJsonObj->TryGetObjectField(TEXTVIEW("Value"), VariantValueObject); VariantValueObject != nullptr) \
{ \
} \
else \
{ \
} \
} \
} \
} \
else \
{ \
Serializer.StartObject(TEXTVIEW(JsonName)); \
} \
}

Private macros for Variant JSON serialization

◆ JSON_SERIALIZE_PRIVATE_VARIANT_END

#define JSON_SERIALIZE_PRIVATE_VARIANT_END ( )
Value:
if (VariantValue != nullptr) \
{ \
if (!Serializer.IsLoading()) \
{ \
Serializer.EndObject(); \
} \
}

◆ JSON_SERIALIZE_RAW_JSON_STRING

#define JSON_SERIALIZE_RAW_JSON_STRING (   JsonName,
  JsonValue 
)
Value:
if (Serializer.IsLoading()) \
{ \
using CharType = TElementType_T<decltype(JsonValue)>; \
if (Serializer.GetObject()->HasTypedField<EJson::Object>(TEXTVIEW(JsonName))) \
{ \
TSharedPtr<FJsonObject> JsonObject = Serializer.GetObject()->GetObjectField(TEXTVIEW(JsonName)); \
if (JsonObject.IsValid()) \
{ \
FJsonSerializer::Serialize(JsonObject.ToSharedRef(), Writer); \
} \
} \
else \
{ \
} \
} \
else \
{ \
if (!JsonValue.IsEmpty()) \
{ \
Serializer.WriteIdentifierPrefix(TEXTVIEW(JsonName)); \
Serializer.WriteRawJSONValue(*JsonValue); \
} \
}
typename TElementType< T >::Type TElementType_T
Definition ElementType.h:57
Definition JsonWriter.h:783
TSharedRef< ObjectType, Mode > ToSharedRef() const &
Definition SharedPointer.h:1028
UE_FORCEINLINE_HINT const bool IsValid() const
Definition SharedPointer.h:1085

◆ JSON_SERIALIZE_SERIALIZABLE

#define JSON_SERIALIZE_SERIALIZABLE (   JsonName,
  JsonValue 
)    UE_DEPRECATED_MACRO(5.6, "JSON_SERIALIZE_SERIALIZABLE has been deprecated, use JSON_SERIALIZE_MEMBERS_OF instead") JSON_SERIALIZE_MEMBERS_OF(JsonValue)

◆ JSON_SERIALIZE_SIMPLECOPY

#define JSON_SERIALIZE_SIMPLECOPY (   JsonMap)     Serializer.SerializeSimpleMap(JsonMap)

◆ JSON_SERIALIZE_VARIANT_BEGIN

#define JSON_SERIALIZE_VARIANT_BEGIN (   JsonName,
  JsonValue 
)
Value:

Macros for begin/end of regular TVariant<...> value, insert JSON_SERIALIZE_VARIANT_IFTYPE_SERIALIZABLE in between BEGIN/END pair

◆ JSON_SERIALIZE_VARIANT_END

#define JSON_SERIALIZE_VARIANT_END ( )

◆ JSON_SERIALIZE_VARIANT_IFTYPE_SERIALIZABLE

#define JSON_SERIALIZE_VARIANT_IFTYPE_SERIALIZABLE (   TypeName,
  Type 
)
Value:
if (VariantValue != nullptr) \
{ \
if (Serializer.IsLoading()) \
{ \
if (VariantJsonObj.IsValid() && VariantTypeStr == TEXTVIEW(TypeName)) \
{ \
VariantValue->Emplace<Type>(); \
VariantValue->Get<Type>().FromJson(VariantJsonObj); \
} \
} \
else \
{ \
/* created Value + Type */ \
if (VariantValue->IsType<Type>()) \
{ \
VariantTypeStr = TEXTVIEW(TypeName); \
Serializer.Serialize(TEXTVIEW("Type"), VariantTypeStr); \
Serializer.StartObject(TEXTVIEW("Value")); \
VariantValue->Get<Type>().Serialize(Serializer, true); \
Serializer.EndObject(); \
} \
} \
}
Type
Definition PawnAction_Move.h:11

Macros for serializing a specific sub type of a variant, only to be insert in between (optional) VARIANT begin/end pair

◆ JSON_SERIALIZE_WITHDEFAULT

#define JSON_SERIALIZE_WITHDEFAULT (   JsonName,
  JsonValue,
  DefaultJsonValue 
)
Value:
if (Serializer.IsLoading()) \
{ \
if (!Serializer.GetObject()->HasField(TEXTVIEW(JsonName))) \
{ \
} \
} \
Serializer.Serialize(TEXTVIEW(JsonName), JsonValue);