using System.Collections.Generic;
using Newtonsoft.Json.Linq;
public static void Main()
var jsonString = "{\"success\":true,\"result\":[{\"attribute\":\"status\",\"type\":\"boolean\",\"supportedValues\":[true,false]},{\"attribute\":\"warmth\",\"type\":\"integer\",\"supportedValues\":{\"minimum\":2700.0,\"maximum\":6500.0,\"step\":1.0,\"unit\":\"@\"}},{\"attribute\":\"rgb\",\"type\":\"json\",\"supportedValues\":{\"minimum\":0.0,\"maximum\":100.0,\"step\":1.0,\"unit\":\"@\"}},{\"attribute\":\"dimLevel\",\"type\":\"integer\",\"supportedValues\":{\"minimum\":0.0,\"maximum\":100.0,\"step\":1.0,\"unit\":\"@\"}}]}";
var jsonObject = JsonConvert.DeserializeObject<ObjectSupported>(jsonString);
Console.WriteLine("====================");
Console.WriteLine(jsonObject.Result[0].SupportedValues.ToString());
Console.WriteLine("====================");
Console.WriteLine("sup 0 item 0: " + jsonObject.Result[0].GetSupportedValues()["0"]);
Console.WriteLine("====================");
Console.WriteLine(jsonObject.Result[1].SupportedValues.ToString());
Console.WriteLine("====================");
Console.WriteLine("sup 1 item maximum: " + jsonObject.Result[1].GetSupportedValues()["maximum"]);
string json = JsonConvert.SerializeObject(jsonObject, Formatting.Indented);
public class ObjectSupported
public List<ObjectAtt> Result
public object SupportedValues
public Dictionary<string, dynamic> GetSupportedValues()
var dict = new Dictionary<string, dynamic>();
if (SupportedValues.GetType().Name == "JArray")
JArray jArray = JArray.Parse(SupportedValues.ToString());
foreach (var item in jArray)
dict.Add(i.ToString(), item);
else if (SupportedValues.GetType().Name == "JObject")
var jsonObj = JsonConvert.DeserializeObject<ObjectNum>(SupportedValues.ToString());
dict.Add("minimum", jsonObj.Minimum);
dict.Add("maximum", jsonObj.Maximum);
dict.Add("step", jsonObj.Step);
dict.Add("unit", jsonObj.Unit);