【问题标题】:Deserialization of array with DataContractJsonSerializer with Windows Store App使用 Windows Store 应用程序使用 DataContractJsonSerializer 对数组进行反序列化
【发布时间】:2017-08-10 06:30:05
【问题描述】:

是否可以在 Windows 应用商店应用中使用原生 DataContractJsonSerializer 反序列化 json 数组?

示例,来自:

[{"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);
        }
    }

【问题讨论】:

    标签: arrays windows-store-apps deserialization datacontractjsonserializer


    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多