using System.Diagnostics.CodeAnalysis; using System.Text.Json.Nodes; using System.Text.Json.Serialization; namespace InnovEnergy.Lib.Utils; public static class JsonNodeAccessors { public static T Get(this JsonNode n, String propName) => n[propName]!.GetValue(); public static String? GetString(this JsonNode n, String propName) => n.TryGetString(propName); public static Boolean GetBoolean(this JsonNode n, String propName) => n.Get(propName); public static UInt32 GetUInt32(this JsonNode n, String propName) => n.Get(propName); public static UInt64 GetUInt64(this JsonNode n, String propName) => n.Get(propName); public static Int32 GetInt32(this JsonNode n, String propName) => n.Get(propName); public static Int64 GetInt64(this JsonNode n, String propName) => n.Get(propName); public static JsonArray GetArray(this JsonNode n, String propName) => n[propName]!.AsArray(); public static T[] GetArray(this JsonNode n, String propName) => n.GetArray(propName) .Select(e => e!.GetValue()) .ToArray(); public static T? TryGet(this JsonNode n, String propName) { try { return n[propName]!.GetValue(); } catch { return default; } } public static String? TryGetString(this JsonNode n, String propName) { try { return n.TryGet(propName) ?? ""; } catch (Exception e) { Console.WriteLine(e); return n.TryGet(propName).ToString(); } } public static Boolean? TryGetBoolean(this JsonNode n, String propName) => n.TryGet(propName); public static UInt32? TryGetUInt32(this JsonNode n, String propName) => n.TryGet(propName); public static UInt64? TryGetUInt64(this JsonNode n, String propName) => n.TryGet(propName); public static Int32? TryGetInt32(this JsonNode n, String propName) => n.TryGet(propName); public static Int64? TryGetInt64(this JsonNode n, String propName) => n.TryGet(propName); public static JsonArray? TryGetArray(this JsonNode n, String propName) => n[propName]?.AsArray(); }