Your problem is twofold:
- You don’t have a class defined at the root level. The class structure needs to match the entire JSON, you can’t just deserialize from the middle.
- Whenever you have an object whose keys can change, you need to use a
Dictionary<string, T>
. A regular class won’t work for that; neither will aList<T>
.
Make your classes like this:
class RootObject
{
[JsonProperty("results")]
public Results Results { get; set; }
}
class Results
{
[JsonProperty("jobcodes")]
public Dictionary<string, JobCode> JobCodes { get; set; }
}
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; }
}
Then, deserialize like this:
RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);