Stream Chat Unreal SDK
Loading...
Searching...
No Matches
StreamJsonField.h
1// Copyright 2022 Stream.IO, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Detail/JsonObjectDeserialization.h"
7#include "Detail/JsonObjectSerialization.h"
8#include "StreamJson.h"
9
14namespace JsonField
15{
16template <class T>
17void Serialize(const TOptional<T>& Field, const FString& FieldName, FJsonObject& JsonObject)
18{
19 if (Field.IsSet())
20 {
21 const TSharedRef<FJsonObject> InnerJsonObject = JsonObject::UStructToJsonObject<T>(Field.GetValue());
22 JsonObjectSerialization::SetObjectField(JsonObject, FieldName, InnerJsonObject);
23 }
24}
25
26template <>
27void STREAMJSON_API Serialize(const TOptional<uint32>& Field, const FString& FieldName, FJsonObject&);
28template <>
29void STREAMJSON_API Serialize(const TOptional<FString>& Field, const FString& FieldName, FJsonObject&);
30template <>
31void STREAMJSON_API Serialize(const TOptional<FDateTime>& Field, const FString& FieldName, FJsonObject&);
32
33template <class T>
34void Deserialize(const FJsonObject& JsonObject, const FString& FieldName, TOptional<T>& Field)
35{
36 const TSharedPtr<FJsonObject>* InnerJsonObject;
37 if (JsonObjectSerialization::TryGetObjectField(JsonObject, FieldName, InnerJsonObject))
38 {
39 T OutStruct;
41 {
42 Field.Emplace(OutStruct);
43 }
44 }
45}
46template <>
47void STREAMJSON_API Deserialize<uint32>(const FJsonObject& JsonObject, const FString& FieldName, TOptional<uint32>& Field);
48template <>
49void STREAMJSON_API Deserialize<FDateTime>(const FJsonObject& JsonObject, const FString& FieldName, TOptional<FDateTime>& Field);
50} // namespace JsonField
Custom serialization and deserialization for types which aren't supported by UPROPERTY (e....
Definition: StreamJsonField.h:15
STREAMJSON_API bool JsonObjectToUStruct(const TSharedRef< FJsonObject > &JsonObject, const UStruct *StructDefinition, void *OutStruct)
Converts from a Json Object to a UStruct, using importText.
Definition: JsonObjectDeserialization.cpp:695
Conversion to and from dynamic JSON objects.
Definition: StreamJson.h:16