Cannot deserialize the JSON array (e.g. [1,2,3]) into type ' ' because type requires JSON object (e.g. {"name":"value"}) to deserialize correctly Cannot deserialize the JSON array (e.g. [1,2,3]) into type ' ' because type requires JSON object (e.g. {"name":"value"}) to deserialize correctly arrays arrays

Cannot deserialize the JSON array (e.g. [1,2,3]) into type ' ' because type requires JSON object (e.g. {"name":"value"}) to deserialize correctly


Your json string is wrapped within square brackets ([]), hence it is interpreted as array instead of single RetrieveMultipleResponse object. Therefore, you need to deserialize it to type collection of RetrieveMultipleResponse, for example :

var objResponse1 =     JsonConvert.DeserializeObject<List<RetrieveMultipleResponse>>(JsonStr);


If one wants to support Generics (in an extension method) this is the pattern...

public  static List<T> Deserialize<T>(this string SerializedJSONString){    var stuff = JsonConvert.DeserializeObject<List<T>>(SerializedJSONString);    return stuff;}

It is used like this:

var rc = new MyHttpClient(URL);//This response is the JSON Array (see posts above)var response = rc.SendRequest();var data = response.Deserialize<MyClassType>();

MyClassType looks like this (must match name value pairs of JSON array)

[JsonObject(MemberSerialization = MemberSerialization.OptIn)] public class MyClassType {    [JsonProperty(PropertyName = "Id")]    public string Id { get; set; }    [JsonProperty(PropertyName = "Name")]    public string Name { get; set; }    [JsonProperty(PropertyName = "Description")]    public string Description { get; set; }    [JsonProperty(PropertyName = "Manager")]    public string Manager { get; set; }    [JsonProperty(PropertyName = "LastUpdate")]    public DateTime LastUpdate { get; set; } }

Use NUGET to download Newtonsoft.Json add a reference where needed...

using Newtonsoft.Json;


Can't add a comment to the solution but that didn't work for me. The solution that worked for me was to use:

var des = (MyClass)Newtonsoft.Json.JsonConvert.DeserializeObject(response, typeof(MyClass)); return des.data.Count.ToString();

Deserializing JSON array into strongly typed .NET object