UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
JsonArchiveOutputFormatter.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
6#include "Containers/Map.h"
8#include "CoreMinimal.h"
9#include "HAL/Platform.h"
13
14class FArchive;
15class FName;
16class FPackageIndex;
17class FText;
18class UObject;
19struct FLazyObjectPtr;
20struct FObjectPtr;
21struct FSoftObjectPath;
22struct FSoftObjectPtr;
23struct FWeakObjectPtr;
24
25#if WITH_TEXT_ARCHIVE_SUPPORT
26
27class FJsonArchiveOutputFormatter final : public FStructuredArchiveFormatter
28{
29public:
30 // Noncopyable
31 FJsonArchiveOutputFormatter(FJsonArchiveOutputFormatter&&) = delete;
32 FJsonArchiveOutputFormatter(const FJsonArchiveOutputFormatter&) = delete;
33 FJsonArchiveOutputFormatter& operator=(FJsonArchiveOutputFormatter&&) = delete;
34 FJsonArchiveOutputFormatter& operator=(const FJsonArchiveOutputFormatter&) = delete;
35
36 COREUOBJECT_API explicit FJsonArchiveOutputFormatter(FArchive& InInner);
38
40
41 COREUOBJECT_API virtual bool HasDocumentTree() const override;
42
43 COREUOBJECT_API virtual void EnterRecord() override;
44 COREUOBJECT_API virtual void LeaveRecord() override;
45 COREUOBJECT_API virtual void EnterField(FArchiveFieldName Name) override;
46 COREUOBJECT_API virtual void LeaveField() override;
48
49 COREUOBJECT_API virtual void EnterArray(int32& NumElements) override;
50 COREUOBJECT_API virtual void LeaveArray() override;
51 COREUOBJECT_API virtual void EnterArrayElement() override;
52 COREUOBJECT_API virtual void LeaveArrayElement() override;
53
54 COREUOBJECT_API virtual void EnterStream() override;
55 COREUOBJECT_API virtual void LeaveStream() override;
56 COREUOBJECT_API virtual void EnterStreamElement() override;
57 COREUOBJECT_API virtual void LeaveStreamElement() override;
58
59 COREUOBJECT_API virtual void EnterMap(int32& NumElements) override;
60 COREUOBJECT_API virtual void LeaveMap() override;
61 COREUOBJECT_API virtual void EnterMapElement(FString& Name) override;
62 COREUOBJECT_API virtual void LeaveMapElement() override;
63
64 COREUOBJECT_API virtual void EnterAttributedValue() override;
65 COREUOBJECT_API virtual void EnterAttribute(FArchiveFieldName AttributeName) override;
66 COREUOBJECT_API virtual void EnterAttributedValueValue() override;
67 COREUOBJECT_API virtual void LeaveAttribute() override;
68 COREUOBJECT_API virtual void LeaveAttributedValue() override;
69 COREUOBJECT_API virtual bool TryEnterAttribute(FArchiveFieldName AttributeName, bool bEnterWhenSaving) override;
70
71 COREUOBJECT_API virtual bool TryEnterAttributedValueValue() override;
72
73 COREUOBJECT_API virtual void Serialize(uint8& Value) override;
74 COREUOBJECT_API virtual void Serialize(uint16& Value) override;
75 COREUOBJECT_API virtual void Serialize(uint32& Value) override;
76 COREUOBJECT_API virtual void Serialize(uint64& Value) override;
77 COREUOBJECT_API virtual void Serialize(int8& Value) override;
78 COREUOBJECT_API virtual void Serialize(int16& Value) override;
79 COREUOBJECT_API virtual void Serialize(int32& Value) override;
80 COREUOBJECT_API virtual void Serialize(int64& Value) override;
81 COREUOBJECT_API virtual void Serialize(float& Value) override;
82 COREUOBJECT_API virtual void Serialize(double& Value) override;
83 COREUOBJECT_API virtual void Serialize(bool& Value) override;
84 COREUOBJECT_API virtual void Serialize(UTF32CHAR& Value) override;
85 COREUOBJECT_API virtual void Serialize(FString& Value) override;
86 COREUOBJECT_API virtual void Serialize(FName& Value) override;
87 COREUOBJECT_API virtual void Serialize(UObject*& Value) override;
88#if WITH_VERSE_VM || defined(__INTELLISENSE__)
89 COREUOBJECT_API virtual void Serialize(Verse::VCell*& Value) override;
90#endif
91 COREUOBJECT_API virtual void Serialize(FText& Value) override;
92 COREUOBJECT_API virtual void Serialize(FWeakObjectPtr& Value) override;
93 COREUOBJECT_API virtual void Serialize(FSoftObjectPtr& Value) override;
94 COREUOBJECT_API virtual void Serialize(FSoftObjectPath& Value) override;
95 COREUOBJECT_API virtual void Serialize(FLazyObjectPtr& Value) override;
96 COREUOBJECT_API virtual void Serialize(FObjectPtr& Value) override;
97 COREUOBJECT_API virtual void Serialize(TArray<uint8>& Value) override;
98 COREUOBJECT_API virtual void Serialize(void* Data, uint64 DataSize) override;
99
101 {
102 ObjectIndicesMap = InObjectIndicesMap;
103 }
104#if WITH_VERSE_VM || defined(__INTELLISENSE__)
106 {
107 CellIndicesMap = InCellIndicesMap;
108 }
109#endif
110
111private:
113
114 const TMap<TObjectPtr<UObject>, FPackageIndex>* ObjectIndicesMap = nullptr;
115#if WITH_VERSE_VM || defined(__INTELLISENSE__)
116 const TMap<Verse::VCell*, FPackageIndex>* CellIndicesMap = nullptr;
117#endif
118
120 bool bNeedsComma = false;
121 bool bNeedsNewline = false;
122
125
127
128 COREUOBJECT_API void Write(const ANSICHAR* Text);
129 COREUOBJECT_API void Write(const FString& Text);
130
132 COREUOBJECT_API void WriteValue(const FString& Value);
133
134 COREUOBJECT_API void WriteOptionalComma();
139
141
142 COREUOBJECT_API bool IsObjectAllowed(UObject* InObject) const;
143#if WITH_VERSE_VM || defined(__INTELLISENSE__)
144 COREUOBJECT_API bool IsCellAllowed(Verse::VCell* InCell) const;
145#endif
146};
147
148#endif
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
FPlatformTypes::UTF32CHAR UTF32CHAR
A 32-bit character containing a UTF32 (Unicode, 32-bit, fixed-width) code unit.
Definition Platform.h:1143
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition NameTypes.h:617
Definition ObjectResource.h:44
Definition StructuredArchiveFormatter.h:60
virtual void LeaveArrayElement()=0
virtual void EnterArrayElement()=0
virtual void EnterAttribute(FArchiveFieldName AttributeName)=0
virtual bool TryEnterAttributedValueValue()=0
virtual void LeaveRecord()=0
virtual void EnterMap(int32 &NumElements)=0
virtual void LeaveAttribute()=0
virtual FArchive & GetUnderlyingArchive()=0
virtual void EnterStreamElement()=0
virtual void EnterField(FArchiveFieldName Name)=0
virtual void LeaveStream()=0
virtual void LeaveMapElement()=0
virtual bool TryEnterField(FArchiveFieldName Name, bool bEnterWhenWriting)=0
virtual void EnterMapElement(FString &Name)=0
virtual bool TryEnterAttribute(FArchiveFieldName AttributeName, bool bEnterWhenWriting)=0
virtual bool HasDocumentTree() const =0
virtual void LeaveArray()=0
virtual void EnterAttributedValue()=0
virtual void LeaveStreamElement()=0
virtual void EnterArray(int32 &NumElements)=0
virtual void LeaveAttributedValue()=0
virtual void EnterStream()=0
virtual void EnterAttributedValueValue()=0
virtual void LeaveField()=0
virtual void LeaveMap()=0
virtual void EnterRecord()=0
Definition Text.h:385
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition Object.h:95
void WriteValue(FJsonWriterRef Writer, const FString &Key, const ValueType &Value)
Definition NativeJSScripting.cpp:19
Definition StructuredArchiveNameHelpers.h:10
Definition LazyObjectPtr.h:151
Definition ObjectPtr.h:55
Definition SoftObjectPath.h:56
Definition SoftObjectPtr.h:45
Definition WeakObjectPtr.h:49
Definition ObjectPtr.h:488