using System.Text.Json.Nodes; namespace Sandbox; public static partial class SandboxSystemExtensions { /// /// Get a property value by name, from a JsonObject. Return defaultValue if it's not found. /// public static T GetPropertyValue( this JsonObject jso, string membername, in T defaultvalue ) { if ( jso is null ) return defaultvalue; if ( !jso.TryGetPropertyValue( membername, out var value ) ) return defaultvalue; if ( value is T tValue ) return tValue; if ( value is JsonNode node ) { try { return node.Deserialize(); } catch { return defaultvalue; } } try { return (T)Convert.ChangeType( value, typeof( T ) ); } catch { return defaultvalue; } } }