using System.Buffers; using System.Text; using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Json.Nodes; using System.Text.Unicode; using System.Xml.Linq; namespace IES.ExamServer { public static class JsonExtensions { private static readonly JsonSerializerOptions jsonSerializerOptions = new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) }; public static string ToJsonString(this JsonElement json) { return JsonSerializer.Serialize(json, jsonSerializerOptions); } public static string ToJsonString(this Object obj) { return JsonSerializer.Serialize(obj, jsonSerializerOptions); } public static string ToJsonString(this JsonNode node) { return JsonSerializer.Serialize(node, jsonSerializerOptions); } public static T? ToObject(this JsonElement json) where T : class { return JsonSerializer.Deserialize(json.GetRawText(), jsonSerializerOptions); } public static T? ToObject(this string json) where T : class { try { return JsonSerializer.Deserialize(json, jsonSerializerOptions); } catch (JsonException ex) { return null; // throw new InvalidOperationException("Failed to deserialize JSON.", ex); } } public static T? ToObject(this JsonNode json) where T : class { return JsonSerializer.Deserialize(json, jsonSerializerOptions!); } } }