using System.Collections.Generic;
public static void Main()
ApiResult result1 = Deserialize(json);
Console.WriteLine("Results from single object");
foreach (var item in result1.PropertyA)
Console.WriteLine(item.First);
Console.WriteLine(item.Second);
ApiResult result2 = Deserialize(json2);
Console.WriteLine("Results from array");
foreach (var item in result2.PropertyA)
Console.WriteLine(item.First);
Console.WriteLine(item.Second);
static ApiResult Deserialize(string json)
ApiResult result = new ApiResult();
dynamic d = JsonConvert.DeserializeObject(json);
if (d.propertyA.GetType() == typeof (Newtonsoft.Json.Linq.JObject))
ApiItem item = new ApiItem();
item.First = d.propertyA.first;
item.Second = d.propertyA.second;
result.PropertyA = new ApiItem[1];
result.PropertyA[0] = item;
else if (d.propertyA.GetType() == typeof (Newtonsoft.Json.Linq.JArray))
result = JsonConvert.DeserializeObject<ApiResult>(json);
public ApiItem[] PropertyA