title: Deserialize JSON to C# Classes
body: <p>Below is a (slightly) stripped down response I get from a REST API upon successful creation of a new "job code" entry.  I need to deserialize the response into some classes, but I'm stumped.</p>
  
  <p>For reference, I'm using JSON.NET in .NET 3.5 (running in a SSIS script in SQL Server 2008 R2) to attempt my deserialization.  Here's the JSON - which I obviously have no control over as it's coming from someone else's API:</p>
  
  <pre><code>{
     "results":{
        "jobcodes":{
           "1":{
              "_status_code":200,
              "_status_message":"Created",
              "id":444444444,
              "assigned_to_all":false,
              "billable":true,
              "active":true,
              "type":"regular",
              "name":"1234 Main Street - Jackson"
           },
           "2":{
              "_status_code":200,
              "_status_message":"Created",
              "id":1234567890,
              "assigned_to_all":false,
              "billable":true,
              "active":true,
              "type":"regular",
              "name":"4321 Some Other Street - Jackson"
           }
        }
     }
  }
  </code></pre>
  
  <p>In my C# code, I do have a "JobCode" class defined which only partially maps the JSON values to properties - I'm not interested in all of the data that's returned to me:</p>
  
  <pre><code>[JsonObject]
  class JobCode
  {
      [JsonProperty("_status_code")]
      public string StatusCode { get; set; }
      [JsonProperty("_status_message")]
      public string StatusMessage { get; set; }
      [JsonProperty("id")]
      public string Id {get; set;}
      [JsonProperty("name")]
      public string Name { get; set; }
  
      //-------------------------------------------------------------------------------
      // Empty constructor for JSON serialization support
      //-------------------------------------------------------------------------------
  
      public JobCode() { }
  }
  </code></pre>
  
  <p>I'm attempting to deserialize the data via this call:</p>
  
  <pre><code>newResource = JsonConvert.DeserializeObject&lt;JobCode&gt;(jsonResponse);
  </code></pre>
  
  <p>Where jsonResponse is the code outputted above.<br>
  When I execute the code, "newResource" always comes back as null - which is not unexpected because I know that there are actually multiple jobcodes in the data and this code is trying to deserialize it into a single JobCode object.  I tried creating a new class called "JobCodes" that looks like this:</p>
  
  <pre><code>class JobCodes
  {
      [JsonProperty("jobcodes")]
      public List&lt;JobCode&gt;_JobCodes { get; set; }
  }
  </code></pre>
  
  <p>And then I tried calling this:</p>
  
  <pre><code>newResource = JsonConvert.DeserializeObject&lt;JobCodes&gt;(jsonResponse);
  </code></pre>
  
  <p>But the issue persists - my return object is null.
  What's throwing me off, I think, is the presence of the "1" and "2" identifiers.  I don't know how to account for their presence in my object design and/or usage of the JSON.NET class / property attributes like [JsonObject],[JsonProperty], etc.</p>
  
  <p>When I run the JSON data through <a href="http://json2csharp.com/">JSON2CSharp</a>, it constructs some weird-looking classes, so that hasn't proven too effective.  I've validated the JSON with several different validators and it all checks out - I just don't know what I'm missing here.  </p>
  
  <p>Ultimately, I'd like to return a List from the JSON data, but I'm stumped on what I need to do to make that happen.</p>