2012-01-05 26 views
5

我有以下JSON字符串:(正如你可能會注意到不幸的是我有一種「根」元素的數組中的每個對象的沒有這個「根」元素的任務就變得非常簡單)如何使用Json.NET爲數組中的每個對象反序列化帶有「root」元素的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<Person> ListPersons() { 
    return JsonConvert.DeserializeObject<List<Person>>(jsonString); 
} 

是否有可能做Json.NET不會產生像PersonResult包裝類?

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

對我來說,完美的解決方案是能夠以某種方式明確指定這個「根」(例如,通過屬性),並且不產生任何包裝,助手等

回答

4

可惜的是,有沒有什麼可以做這個問題。這就是JSON格式的外觀,沒有辦法。其結果是,Json.Net「看到」你的字符串或多或少:

對象的數組與Person財產,這與NameGender性能

您能再對象可能玩一些自定義ContractResolvers強制串行器工作不同......但這是相當多的工作。你所建議的封裝類是如何處理這些問題的,我建議堅持下去。

+0

是的,不幸的是我不得不以包裝方式結束。謝謝。 – 2012-01-07 19:14:41

相關問題