Удаление десериализации массива объектов JSON с помощью Json.net

Я пытаюсь использовать API, который использует следующую структуру примеров для возвращаемого json

[
   {
      "customer":{
         "first_name":"Test",
         "last_name":"Account",
         "email":"[email protected]",
         "organization":"",
         "reference":null,
         "id":3545134,
         "created_at":"2013-08-06T15:51:15-04:00",
         "updated_at":"2013-08-06T15:51:15-04:00",
         "address":"",
         "address_2":"",
         "city":"",
         "state":"",
         "zip":"",
         "country":"",
         "phone":""
      }
   },
   {
      "customer":{
         "first_name":"Test",
         "last_name":"Account2",
         "email":"[email protected]",
         "organization":"",
         "reference":null,
         "id":3570462,
         "created_at":"2013-08-12T11:54:58-04:00",
         "updated_at":"2013-08-12T11:54:58-04:00",
         "address":"",
         "address_2":"",
         "city":"",
         "state":"",
         "zip":"",
         "country":"",
         "phone":""
      }
   }
]

JSON.net отлично справится с чем-то вроде следующей структуры

{
    "customer": {
        ["field1" : "value", etc...],
        ["field1" : "value", etc...],
    }
}

Но я не могу понять, как заставить его быть счастливым с предоставленной структурой.

Использование стандартного JsonConvert.DeserializeObject(content) приводит к правильному количеству клиентов, но все данные равны нулю.

Выполнение чего-либо из списка клиентов (ниже) приводит к исключению "Невозможно десериализовать текущий массив JSON"

public class CustomerList
{
    public List<Customer> customer { get; set; }
}

Мысли?

Ответ 1

Вы можете создать новую модель для десериализации Json CustomerJson:

public class CustomerJson
{
    [JsonProperty("customer")]
    public Customer Customer { get; set; }
}

public class Customer
{
    [JsonProperty("first_name")]
    public string Firstname { get; set; }

    [JsonProperty("last_name")]
    public string Lastname { get; set; }

    ...
}

И вы можете легко десериализовать свой json:

JsonConvert.DeserializeObject<List<CustomerJson>>(json);

Надеюсь, что это поможет!

Документация: Сериализация и десериализация JSON

Ответ 2

Для тех, кто не хочет создавать какие-либо модели, используйте следующий код:

var result = JsonConvert.DeserializeObject<
  List<Dictionary<string, 
    Dictionary<string, string>>>>(content);