// Copyright Epic Games, Inc. All Rights Reserved. using System.Text.Json; using EpicGames.Core; using EpicGames.Horde; using EpicGames.Horde.Jobs; namespace HordeServer.Utilities { /// /// Helper methods for json serialization /// public static class JsonUtils { /// /// Default JSON serialization options /// public static JsonSerializerOptions DefaultSerializerOptions { get; } = CreateDefaultJsonSerializerOptions(); static JsonSerializerOptions CreateDefaultJsonSerializerOptions() { JsonSerializerOptions options = new JsonSerializerOptions(); JsonUtils.ConfigureJsonSerializer(options); options.MakeReadOnly(true); return options; } /// /// Configure a json serializer with all standard Horde converters /// public static void ConfigureJsonSerializer(JsonSerializerOptions options) { HordeHttpClient.ConfigureJsonSerializer(options); options.Converters.Add(new ObjectIdJsonConverter()); options.Converters.Add(new ObjectIdJsonConverterFactory()); options.Converters.Add(new JsonKnownTypesConverterFactory()); options.Converters.Add(new SubResourceIdJsonConverterFactory()); options.Converters.Add(new DateTimeJsonConverter()); options.Converters.Add(new TimeSpanJsonConverter()); options.Converters.Add(new DateTimeOffsetJsonConverter()); } } }