UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
JsonSerializerWriter.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
9
13template <class CharType = TCHAR, class PrintPolicy = TPrettyJsonPrintPolicy<CharType> >
16{
19
20public:
21
31
33 {
34 }
35
37 virtual bool IsLoading() const override { return false; }
39 virtual bool IsSaving() const override { return true; }
42
46 virtual void StartObject() override
47 {
48 JsonWriter->WriteObjectStart();
49 }
50
54 virtual void StartObject(FStringView Name) override
55 {
56 JsonWriter->WriteObjectStart(Name);
57 }
61 virtual void EndObject() override
62 {
63 JsonWriter->WriteObjectEnd();
64 }
65
66 virtual void StartArray() override
67 {
68 JsonWriter->WriteArrayStart();
69 }
70
71 virtual void StartArray(FStringView Name) override
72 {
73 JsonWriter->WriteArrayStart(Name);
74 }
75
76 virtual void EndArray() override
77 {
78 JsonWriter->WriteArrayEnd();
79 }
86 virtual void Serialize(FStringView Name, int32& Value) override
87 {
88 JsonWriter->WriteValue(Name, Value);
89 }
96 virtual void Serialize(FStringView Name, uint32& Value) override
97 {
98 JsonWriter->WriteValue(Name, static_cast<int64>(Value));
99 }
106 virtual void Serialize(FStringView Name, int64& Value) override
107 {
108 JsonWriter->WriteValue(Name, Value);
109 }
116 virtual void Serialize(FStringView Name, bool& Value) override
117 {
118 JsonWriter->WriteValue(Name, Value);
119 }
126 virtual void Serialize(FStringView Name, FString& Value) override
127 {
128 JsonWriter->WriteValue(Name, Value);
129 }
136 virtual void Serialize(FStringView Name, FUtf8String& Value) override
137 {
138 JsonWriter->WriteValue(Name, Value);
139 }
146 virtual void Serialize(FStringView Name, FText& Value) override
147 {
148 JsonWriter->WriteValue(Name, Value.ToString());
149 }
156 virtual void Serialize(FStringView Name, float& Value) override
157 {
158 JsonWriter->WriteValue(Name, Value);
159 }
166 virtual void Serialize(FStringView Name, double& Value) override
167 {
168 JsonWriter->WriteValue(Name, Value);
169 }
176 virtual void Serialize(FStringView Name, FDateTime& Value) override
177 {
178 if (Value.GetTicks() > 0)
179 {
180 JsonWriter->WriteValue(Name, Value.ToIso8601());
181 }
182 }
183
185 {
186 ::Visit([this, &Name](auto& StoredValue)
187 {
188 using StoredValueType = std::decay_t<decltype(StoredValue)>;
189 if constexpr (std::is_same_v<StoredValueType, JsonNumberValueVariants>)
190 {
191 ::Visit([this, &Name](auto& StoredNumberValue)
192 {
193 JsonWriter->WriteValue(Name, StoredNumberValue);
194 }, StoredValue);
195 }
196 else
197 {
198 JsonWriter->WriteValue(Name, StoredValue);
199 }
200 }, InVariant);
201 }
202
210 {
211 JsonWriter->WriteArrayStart();
212 // Iterate all of values
213 for (FJsonSerializableArray::TIterator ArrayIt(Array); ArrayIt; ++ArrayIt)
214 {
215 JsonWriter->WriteValue(*ArrayIt);
216 }
217 JsonWriter->WriteArrayEnd();
218 }
226 {
227 JsonWriter->WriteArrayStart(Name);
228 // Iterate all of values
230 {
231 JsonWriter->WriteValue(Item);
232 }
233 JsonWriter->WriteArrayEnd();
234 }
242 {
243 JsonWriter->WriteArrayStart(Name);
244 // Iterate all of values
246 {
247 JsonWriter->WriteValue(Item);
248 }
249 JsonWriter->WriteArrayEnd();
250 }
251
259 {
260 JsonWriter->WriteArrayStart(Name);
261 // Iterate all of values
263 {
264 JsonWriter->WriteValue(Item);
265 }
266 JsonWriter->WriteArrayEnd();
267 }
268
276 {
277 JsonWriter->WriteObjectStart(Name);
278 // Iterate all of the keys and their values
279 for (FJsonSerializableKeyValueMap::ElementType& Pair : Map)
280 {
281 Serialize(*Pair.Key, Pair.Value);
282 }
283 JsonWriter->WriteObjectEnd();
284 }
285
293 {
294 JsonWriter->WriteObjectStart(Name);
295 // Iterate all of the keys and their values
296 for (FJsonSerializableKeyValueMapInt::ElementType& Pair : Map)
297 {
298 Serialize(*Pair.Key, Pair.Value);
299 }
300 JsonWriter->WriteObjectEnd();
301 }
309 {
310 JsonWriter->WriteObjectStart(Name);
311 // Iterate all of the keys and their values
312 for (FJsonSerializableKeyValueMapArrayInt::ElementType& Pair : Map)
313 {
314 SerializeArray(*Pair.Key, Pair.Value);
315 }
316 JsonWriter->WriteObjectEnd();
317 }
318
326 {
327 JsonWriter->WriteObjectStart(Name);
328 // Iterate all of the keys and their values
329 for (FJsonSerializableKeyValueMapInt64::ElementType& Pair : Map)
330 {
331 Serialize(*Pair.Key, Pair.Value);
332 }
333 JsonWriter->WriteObjectEnd();
334 }
335
343 {
344 JsonWriter->WriteObjectStart(Name);
345 // Iterate all of the keys and their values
346 for (FJsonSerializableKeyValueMapFloat::ElementType& Pair : Map)
347 {
348 Serialize(*Pair.Key, Pair.Value);
349 }
350 JsonWriter->WriteObjectEnd();
351 }
352
354 {
355 JsonWriter->WriteObjectStart(Name);
356 // Iterate all of the keys and their values
358 {
359 ::Visit([this, &Pair](auto& StoredValue)
360 {
361 using StoredValueType = std::decay_t<decltype(StoredValue)>;
362 if constexpr (std::is_same_v<StoredValueType, JsonNumberValueVariants>)
363 {
364 ::Visit([this, &Pair](auto& StoredNumberValue)
365 {
366 Serialize(*Pair.Key, StoredNumberValue);
367 }, StoredValue);
368 }
369 else
370 {
371 Serialize(*Pair.Key, StoredValue);
372 }
373 }, Pair.Value);
374 }
375 JsonWriter->WriteObjectEnd();
376 }
377
379 {
380 // writing does nothing here, this is meant to read in all data from a json object
381 // writing is explicitly handled per key/type
382 }
383
394
396 {
397 JsonWriter->WriteIdentifierPrefix(Name);
398 }
399
401 {
402 JsonWriter->WriteRawJSONValue(Value);
403 }
404
406 {
407 JsonWriter->WriteRawJSONValue(Value);
408 }
409};
410
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
decltype(auto) Visit(Func &&Callable, Variants &&... Args)
Definition TVariant.h:271
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition JsonSerializerWriter.h:16
virtual bool IsSaving() const override
Definition JsonSerializerWriter.h:39
virtual void SerializeMap(FStringView Name, FJsonSerializableKeySimpleValueVariantMap &Map) override
Definition JsonSerializerWriter.h:353
virtual void SerializeMap(FStringView Name, FJsonSerializableKeyValueMapFloat &Map) override
Definition JsonSerializerWriter.h:342
virtual void Serialize(FStringView Name, FDateTime &Value) override
Definition JsonSerializerWriter.h:176
FJsonSerializerWriter(TSharedRef< TJsonWriter< CharType, PrintPolicy > > InJsonWriter)
Definition JsonSerializerWriter.h:27
virtual bool IsLoading() const override
Definition JsonSerializerWriter.h:37
virtual void SerializeMapSafe(FStringView Name, FJsonSerializableKeyValueMap &Map)
Definition JsonSerializerWriter.h:390
virtual void WriteRawJSONValue(FStringView Value)
Definition JsonSerializerWriter.h:400
virtual void Serialize(FStringView Name, FString &Value) override
Definition JsonSerializerWriter.h:126
virtual void Serialize(FStringView Name, JsonSimpleValueVariant &InVariant) override
Definition JsonSerializerWriter.h:184
virtual void SerializeSimpleMap(FJsonSerializableKeyValueMap &Map) override
Definition JsonSerializerWriter.h:378
virtual void Serialize(FStringView Name, double &Value) override
Definition JsonSerializerWriter.h:166
virtual void StartObject() override
Definition JsonSerializerWriter.h:46
virtual ~FJsonSerializerWriter()
Definition JsonSerializerWriter.h:32
virtual void EndObject() override
Definition JsonSerializerWriter.h:61
virtual void Serialize(FStringView Name, int64 &Value) override
Definition JsonSerializerWriter.h:106
virtual void SerializeMap(FStringView Name, FJsonSerializableKeyValueMap &Map) override
Definition JsonSerializerWriter.h:275
virtual void SerializeMap(FStringView Name, FJsonSerializableKeyValueMapInt &Map) override
Definition JsonSerializerWriter.h:292
virtual void SerializeArray(FJsonSerializableArray &Array) override
Definition JsonSerializerWriter.h:209
virtual void SerializeArray(FStringView Name, FJsonSerializableArrayInt &Array) override
Definition JsonSerializerWriter.h:241
virtual void SerializeArray(FStringView Name, FJsonSerializableArray &Array) override
Definition JsonSerializerWriter.h:225
virtual void EndArray() override
Definition JsonSerializerWriter.h:76
virtual void Serialize(FStringView Name, FUtf8String &Value) override
Definition JsonSerializerWriter.h:136
virtual void SerializeMap(FStringView Name, FJsonSerializableKeyValueMapArrayInt &Map) override
Definition JsonSerializerWriter.h:308
virtual void StartArray(FStringView Name) override
Definition JsonSerializerWriter.h:71
virtual void SerializeArray(FStringView Name, FJsonSerializableArrayFloat &Array) override
Definition JsonSerializerWriter.h:258
virtual void Serialize(FStringView Name, bool &Value) override
Definition JsonSerializerWriter.h:116
virtual void Serialize(FStringView Name, float &Value) override
Definition JsonSerializerWriter.h:156
virtual void StartObject(FStringView Name) override
Definition JsonSerializerWriter.h:54
virtual void WriteIdentifierPrefix(FStringView Name)
Definition JsonSerializerWriter.h:395
virtual TSharedPtr< FJsonObject > GetObject() override
Definition JsonSerializerWriter.h:41
virtual void Serialize(FStringView Name, int32 &Value) override
Definition JsonSerializerWriter.h:86
virtual void SerializeMap(FStringView Name, FJsonSerializableKeyValueMapInt64 &Map) override
Definition JsonSerializerWriter.h:325
virtual void StartArray() override
Definition JsonSerializerWriter.h:66
virtual void WriteRawJSONValue(FUtf8StringView Value)
Definition JsonSerializerWriter.h:405
virtual void Serialize(FStringView Name, uint32 &Value) override
Definition JsonSerializerWriter.h:96
virtual void Serialize(FStringView Name, FText &Value) override
Definition JsonSerializerWriter.h:146
Definition Text.h:385
FString ElementType
Definition Array.h:676
Definition Array.h:64
Definition JsonWriter.h:85
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition TVariant.h:48
Definition DateTime.h:76
Definition JsonSerializerBase.h:12
Definition Tuple.h:652