<PackageReference Include="NJsonSchema" Version="9.2.5" />

JsonExtensionObject

public class JsonExtensionObject
The base JSON class with extension data.
using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Collections.Generic; using System.Linq; namespace NJsonSchema { [JsonConverter(typeof(ExtensionDataDeserializationConverter))] public class JsonExtensionObject { [JsonExtensionData] public IDictionary<string, object> ExtensionData { get; set; } internal void DeserializeExtensionDataSchemas(JsonSerializer serializer) { if (ExtensionData != null) { KeyValuePair<string, object>[] array = ExtensionData.ToArray(); for (int i = 0; i < array.Length; i++) { KeyValuePair<string, object> keyValuePair = array[i]; ExtensionData[keyValuePair.Key] = TryDeserializeValueSchemas(keyValuePair.Value, serializer); } } } private object TryDeserializeValueSchemas(object value, JsonSerializer serializer) { JObject jObject = value as JObject; if (jObject != null) { if (jObject.Property("type") != null || jObject.Property("properties") != null) try { return jObject.ToObject<JsonSchema4>(serializer); } catch { } Dictionary<string, object> dictionary = new Dictionary<string, object>(); { foreach (JProperty item in jObject.Properties()) { dictionary[item.Name] = TryDeserializeValueSchemas(item.Value, serializer); } return dictionary; } } JArray jArray = value as JArray; if (jArray != null) return (from i in jArray select TryDeserializeValueSchemas(i, serializer)).ToArray(); JValue jValue = value as JValue; if (jValue != null) return jValue.Value; return value; } } }