using Newtonsoft.Json.Serialization;
using Newtonsoft.Json.Schema;
using Newtonsoft.Json.Linq;
public static void Main()
'Description': 'This is a test function.',
'Description': 'This is a test function.',
'parameters': '{\'type\': \'object\', \'properties\': {\'prop1\': {\'type\': \'string\'}}}'
var arr = new[]{json0, json1};
foreach (var json in arr)
Function deserializedFunction = JsonConvert.DeserializeObject<Function>(json);
Console.WriteLine($"Name: {deserializedFunction.Name}");
Console.WriteLine($"Description: {deserializedFunction.Description}");
Console.WriteLine($"Parameters: {deserializedFunction.Parameters}");
Console.WriteLine("-------------");
public string Name { get; set; }
public string? Description { get; set; }
public JSchema Parameters { get; set; }
[JsonProperty("parameters")]
public string ParametersJson { get => Parameters.ToString(); set => Parameters = JSchema.Parse(value); }
public Function(string name, string? description, JToken parameters)
Description = description;
if (parameters.Type == JTokenType.String)
Parameters = JSchema.Parse(parameters.ToString());
else if (parameters.Type == JTokenType.Object)
Parameters = parameters.ToObject<JSchema>();