diff --git a/RestSharp.Tests/JsonTests.cs b/RestSharp.Tests/JsonTests.cs index 09f6520ea..555b1e484 100644 --- a/RestSharp.Tests/JsonTests.cs +++ b/RestSharp.Tests/JsonTests.cs @@ -155,6 +155,16 @@ public void Can_Deserialize_Root_Json_Array_To_List() Assert.Equal(4, output.Count); } + [Fact] + public void Can_Deserialize_Root_Json_Array_To_Inherited_List() + { + var data = File.ReadAllText(Path.Combine("SampleData", "jsonarray.txt")); + var response = new RestResponse { Content = data }; + var json = new JsonDeserializer(); + var output = json.Deserialize(response); + Assert.Equal(4, output.Count); + } + [Fact] public void Can_Deserialize_Various_Enum_Values () { diff --git a/RestSharp.Tests/SampleClasses/twitter.cs b/RestSharp.Tests/SampleClasses/twitter.cs index 7a1a7cde7..804528d30 100644 --- a/RestSharp.Tests/SampleClasses/twitter.cs +++ b/RestSharp.Tests/SampleClasses/twitter.cs @@ -51,6 +51,10 @@ public class user public string profile_sidebar_border_color { get; set; } public long id { get; set; } public int utc_offset { get; set; } - } + + public class StatusList : List + { + + } } diff --git a/RestSharp/Deserializers/JsonDeserializer.cs b/RestSharp/Deserializers/JsonDeserializer.cs index 402ed9078..f09882263 100644 --- a/RestSharp/Deserializers/JsonDeserializer.cs +++ b/RestSharp/Deserializers/JsonDeserializer.cs @@ -250,9 +250,12 @@ private IDictionary BuildDictionary(Type type, JEnumerable elements) private IList BuildList(Type type, JEnumerable elements) { var list = (IList)Activator.CreateInstance(type); - var itemType = type.GetGenericArguments()[0]; - foreach (var element in elements) + var listType = type.GetInterfaces().First(x => x.GetGenericTypeDefinition() == typeof(IList<>)); + + var itemType = listType.GetGenericArguments()[0]; + + foreach (var element in elements) { if (itemType.IsPrimitive) {