Q:

JSON C# DeserializeObject Error with Newtonsoft. Json

I have a JSON string that I am getting from the BaseCamp API.   I know for a fact that the JSON is valid, however, I am not able to DeserializeObject using Newtonsoft. Json.   
I get an error saying:
Cannot deserialize the current JSON array (e.g.[1,2,3]) into type BaseCamp. Code. Projects+RootObject because the type requires a JSON objet (e.g. {"name":"value"}) to deserialize correctly. 

The JSON (Unformated What is returned from the API Minus the URL's Values)
[
    {
        "id":6656986,
        "name":"Physics Revamp",
        "description":"ISU department of physics website redesign",
        "archived":false,
        "is_client_project":true,
        "created_at":"2014-08-07T10:59:29.000-05:00",
        "updated_at":"2014-10-30T09:18:01.000-05:00",
        "trashed":false,
        "color":"2c5322",
        "draft":false,
        "template":false,
        "last_event_at":"2014-10-30T09:18:01.000-05:00",
        "starred":false,
        "url":"xxxxxxxxxxxxxxxxxxxxxxx",
        "app_url":"xxxxxxxxxxxxxxx"
    },
    {
        "id":7178664,
        "name":"Physics Videos",
        "description":"",
        "archived":false,
        "is_client_project":false,
        "created_at":"2014-10-02T08:34:46.000-05:00",
        "updated_at":"2014-10-23T08:40:17.000-05:00",
        "trashed":false,
        "color":"660099",
        "draft":false,
        "template":false,
        "last_event_at":"2014-10-23T08:40:17.000-05:00",
        "starred":false,
        "url":"xxxxxxxxxxxxxxxxxxxxxxx",
        "app_url":"xxxxxxxxxxxxxxxxxxx"
    },
    {
        "id":6685451,
        "name":"WZND Website 2014",
        "description":"",
        "archived":false,
        "is_client_project":true,
        "created_at":"2014-08-11T13:25:51.000-05:00",
        "updated_at":"2014-10-30T11:26:39.000-05:00",
        "trashed":false,
        "color":"3185c5",
        "draft":false,
        "template":false,
        "last_event_at":"2014-10-30T11:26:39.000-05:00",
        "starred":false,
        "url":"xxxxxxxxxxxxxxxxxx",
        "app_url":"xxxxxxxxxxxxxxxxx"
    }
]

My C# class:
public class Projects  
    {  
        public class RootObject  
        {  
            public int id { get; set; }  
            public string name { get; set; }  
            public string description { get; set; }  
            public bool archived { get; set; }  
            public bool is_client_project { get; set; }  
            public string created_at { get; set; }  
            public string updated_at { get; set; }  
            public bool trashed { get; set; }  
            public string color { get; set; }  
            public bool draft { get; set; }  
            public bool template { get; set; }  
            public string last_event_at { get; set; }  
            public bool starred { get; set; }  
            public string url { get; set; }  
            public string app_url { get; set; }  
        }  
    }    

I am assuming something is wrong with the way my class is set up, but I can't see it. 

A:

You need to convert to an array of RootObject:
var json = JsonConvert. DeserializeObject<Projects. RootObject[]>(response); 

or list (or any other collection you want for that matter)...
var json = JsonConvert. DeserializeObject<List<Projects. RootObject>>(response); 

