// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include #include "Dom/JsonValue.h" #include "Dom/JsonObject.h" #include "Serialization/JsonSerializer.h" #include "Templates/UnrealTypeTraits.h" /** * Helpers for creating TSharedPtr JSON trees * * Simple example: * * FJsonDomBuilder::FArray InnerArray; * InnerArray.Add(7.f, TEXT("Hello"), true); * * FJsonDomBuilder::FObject Object; * Object.Set(TEXT("Array"), InnerArray); * Object.Set(TEXT("Number"), 13.f); * * Object.AsJsonValue(); * * produces {"Array": [7., "Hello", true], "Number": 13.} */ class FJsonDomBuilder { public: class FArray; class FObject { public: FObject() : Object(MakeShared()) { } FObject(TSharedPtr InObject) : Object(InObject.ToSharedRef()) { } FObject(TSharedRef InObject) : Object(InObject) { } TSharedRef AsJsonValue() const { return MakeShared(Object); } TSharedRef AsJsonObject() const { return Object; } template