Как десериализовать массив JSON с элементом "root" для каждого объекта в массиве с помощью Json.NET?

У меня есть следующая строка JSON:

[
  { "Person" : { "Name" : "John", "Gender" : "male" } },
  { "Person" : { "Name" : "John", "Gender" : "male" } }
]

(Как вы можете заметить, к сожалению, у меня есть своего рода "корневой" элемент для каждого объекта в массиве. Без этого "корневого" элемента задача становится совсем тривиальной)

Мне нужно десериализовать его в список класса Person:

class Person {
    public string Name { get; set; }
    public string Gender { get; set; }
}
...
List ListPersons() {
    return JsonConvert.DeserializeObject>(jsonString);
}

Возможно ли это сделать с помощью Json.NET без создания класса-обертки типа PersonResult?

class PersonResult {
    public Person Person { get; set; }
}
...
List ListPersons() {
    return JsonConvert.DeserializeObject>(jsonString)
                      .Select(p => p.Person)
                      .ToList();
}

Идеальное решение для меня - иметь возможность как-то явно указать этот "корень" (например, через атрибут) и не создавать никаких оберток, помощников и т.д.

6
задан Anton Moiseev 5 January 2012 в 23:43
поделиться