Я пытаюсь десериализовать JSON, возвращенный с http://api.usa.gov/jobs/search.json?query=nursing+jobs, используя шаблон задачи .NET 4.0. Он возвращает этот JSON ( "Загрузить данные JSON" @http://jsonviewer.stack.hu/).
[
  {
    "id": "usajobs:353400300",
    "position_title": "Nurse",
    "organization_name": "Indian Health Service",
    "rate_interval_code": "PA",
    "minimum": 42492,
    "maximum": 61171,
    "start_date": "2013-10-01",
    "end_date": "2014-09-30",
    "locations": [
      "Gallup, NM"
    ],
    "url": "https://www.usajobs.gov/GetJob/ViewDetails/353400300"
  },
  {
    "id": "usajobs:359509200",
    "position_title": "Nurse",
    "organization_name": "Indian Health Service",
    "rate_interval_code": "PA",
    "minimum": 42913,
    "maximum": 61775,
    "start_date": "2014-01-16",
    "end_date": "2014-12-31",
    "locations": [
      "Gallup, NM"
    ],
    "url": "https://www.usajobs.gov/GetJob/ViewDetails/359509200"
  },
  ...
]
Действие индекса:
  public class HomeController : Controller
  {
    public ActionResult Index()
    {
      Jobs model = null;
      var client = new HttpClient();
      var task = client.GetAsync("http://api.usa.gov/jobs/search.json?query=nursing+jobs")
        .ContinueWith((taskwithresponse) =>
        {
          var response = taskwithresponse.Result;
          var jsonTask = response.Content.ReadAsAsync<Jobs>();
          jsonTask.Wait();
          model = jsonTask.Result;
        });
      task.Wait();
      ...
     }
Работа и класс работы:
  [JsonArray]
  public class Jobs { public List<Job> JSON; }
  public class Job
  {
    [JsonProperty("organization_name")]
    public string Organization { get; set; }
    [JsonProperty("position_title")]
    public string Title { get; set; }
  }
Когда я устанавливаю точку останова на jsonTask.Wait(); и исследую jsonTask, статус
Faulted. InnerException - "Тип ProjectName.Jobs - это не коллекция".
Я начал с типа Jobs без атрибута JsonArray и Jobs в качестве массива (Job []) и получил эту ошибку.
  public class Jobs { public Job[] JSON; }
    +       InnerException  {"Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'ProjectName.Models.Jobs' because the type requires a JSON object (e.g. {\"name\":\"value\"}) to deserialize correctly.\r\n
    To fix this error either change the JSON to a JSON object (e.g. {\"name\":\"value\"}) or change the deserialized type to an array or a type that implements a collection interface
 (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.\r\n
Path '', line 1, position 1."}  System.Exception {Newtonsoft.Json.JsonSerializationException}
Как обрабатывать этот сайт JSON с помощью шаблона задачи .NET 4.0? Я хотел бы получить эту работу, прежде чем перейти к шаблону await async в .NET 4.5.
ANSWER UPDATE:
Вот пример использования асинхронного ожидания .NET 4.5 с ответом на brumScouse.
 public async Task<ActionResult>Index()
 {
    List<Job> model = null;
    var client = newHttpClient();
    // .NET 4.5 async await pattern
    var task = await client.GetAsync(http://api.usa.gov/jobs/search.json?query=nursing+jobs);
    var jsonString = await task.Content.ReadAsStringAsync();
    model = JsonConvert.DeserializeObject<List<Job>>(jsonString);
    returnView(model);
 }
Вам нужно будет ввести пространство имен System.Threading.Tasks. 
Примечание: в .Content нет метода .ReadAsString, поэтому я использовал метод .ReadAsStringAsync.