Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions RestSharp.Tests/JsonTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<StatusList>(response);
Assert.Equal(4, output.Count);
}

[Fact]
public void Can_Deserialize_Various_Enum_Values ()
{
Expand Down
6 changes: 5 additions & 1 deletion RestSharp.Tests/SampleClasses/twitter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<status>
{

}
}
7 changes: 5 additions & 2 deletions RestSharp/Deserializers/JsonDeserializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -250,9 +250,12 @@ private IDictionary BuildDictionary(Type type, JEnumerable<JToken> elements)
private IList BuildList(Type type, JEnumerable<JToken> 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)
{
Expand Down