diff --git a/RestSharp.Tests/JsonTests.cs b/RestSharp.Tests/JsonTests.cs index 4d8ce03be..a7d2b54ba 100644 --- a/RestSharp.Tests/JsonTests.cs +++ b/RestSharp.Tests/JsonTests.cs @@ -125,6 +125,20 @@ public void Can_Deserialize_From_Root_Element() Assert.Equal("John Sheehan", output.DisplayName); } + [Fact] + public void Can_Deserialize_To_Dictionary_String_Object() { + var doc = File.ReadAllText(Path.Combine("SampleData", "jsondictionary.txt")); + + var json = new JsonDeserializer(); + + var output = json.Deserialize>(new RestResponse() { Content = doc }); + + Assert.Equal(output.Keys.Count, 3); + + var firstKeysVal = output.FirstOrDefault().Value; + Assert.IsAssignableFrom(firstKeysVal); + } + [Fact] public void Can_Deserialize_Generic_Members() { diff --git a/RestSharp/Deserializers/JsonDeserializer.cs b/RestSharp/Deserializers/JsonDeserializer.cs index e1df80610..06fd1d66f 100644 --- a/RestSharp/Deserializers/JsonDeserializer.cs +++ b/RestSharp/Deserializers/JsonDeserializer.cs @@ -267,7 +267,17 @@ private object ConvertValue(Type type, object value) return CreateAndMap(type, value); } } - else + else if (type.IsSubclassOfRawGeneric(typeof(List<>))) + { + // handles classes that derive from List + return BuildList(type, value); + } + else if (type == typeof(JsonObject)) + { + // simplify JsonObject into a Dictionary + return BuildDictionary(typeof(Dictionary), value); + } + else { // nested property classes return CreateAndMap(type, value);