Десериализация массива с помощью DataContractJsonSerializer с приложением Магазина Windows

Можно ли десериализовать массив json с помощью собственного DataContractJsonSerializer в приложении Магазина Windows?

Пример из:

[{"groups":[{"name":"tom","vip":false},{"name":"sam","vip":true}]},{"groups":[{"name":"pam","vip":false},{"name":"mom","vip":true}]}]

Что-нибудь примерно в строке:

public class Group
{
    public string name { get; set; }
    public bool vip { get; set; }
}

[DataContract]
public class RootObject
{
    [DataMember]
    public List<Group> groups { get; set; }
}

До сих пор мои попытки всегда приводили к «нулевому» списку или «нулевому» IEnumerable, когда я делал это следующим образом:

    public static T deserializeJson<T>(string result)
    {
        DataContractJsonSerializer jsonSer = new DataContractJsonSerializer(typeof(T));
        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(result)))
        {
            ms.Position = 0;
            return (T)jsonSer.ReadObject(ms);
        }
    }

person Cœur    schedule 27.05.2013    source источник


Ответы (1)


Все вещи правильные. Просто напишите эту строку, чтобы получить массив объектов.

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string json = @"[{""groups"":[{""name"":""tom"",""vip"":false},{""name"":""sam"",""vip"":true}]},{""groups"":[{""name"":""pam"",""vip"":false},{""name"":""mom"",""vip"":true}]}]";
    var res = deserializeJson<RootObject[]>(json);
    //OR
    var res1 = deserializeJson<List<RootObject>>(json);
}
person Farhan Ghumra    schedule 27.05.2013