繁体   English   中英

反序列化json数组以列出wp7

[英]deserialize json array to list wp7

我需要从json中的子数组中获取数据,但是它没有转换成列表,下面是我的json字符串

{“responseCode”:“0”,“responseObject”:{“TotalRecords”:25,“TotalDisplayRecords”:25,“aaData”:[{“InvoiceId”:16573,“somedata ..},”appCrmAccount(某些标题,总共100个这样的标题)金额“:40086.00,”invoiceNumber“:”12,accountName“:”dfgAsfsadf“,”dueDateStr“:”04/24/2012“(要进入列表的数据)

这是我的代码:

var djson = new DataContractJsonSerializer(typeof(dataList));
var stream = new MemoryStream(Encoding.UTF8.GetBytes(json));
dataList result = (dataList)djson.ReadObject(stream);//not getting execute

请帮助..在此先感谢。

尝试这个

private void btnAdd_Click(object sender, RoutedEventArgs e)
{
    WebClient proxy = new WebClient();
    proxy.DownloadStringCompleted += new DownloadStringCompletedEventHandler(proxy_DownloadStringCompleted);
    proxy.DownloadStringAsync(new Uri(""));
}

并且需要解析返回的JSON,如下所示。 在创建DataContractJsonSrrializer实例的参数中,我们传递了List of Student。

void proxy_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    Stream stream = new MemoryStream(Encoding.Unicode.GetBytes(e.Result));

    DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(List<Student>));
    List<Student> result = obj.ReadObject(stream) as List<Student>;
    lstStudents.ItemsSource = result;
}

您应该标记所有类和属性DataContract和DataMember属性。 使用你的代码片段我创建了这样的东西:

[DataContract]
    public class Result
    {
        [DataMember(Name="responseCode")]
        public int Code { get; set; }

        [DataMember(Name="responseObject")]
        public ResponseObject Result { get; set; }
    }

    [DataContract]
    public class ResponseObject
    {
        [DataMember]
        public int TotalRecords { get; set; }

        [DataMember]
        public int TotalDisplayRecords { get; set; }

        [DataMember(Name="aaData")]
        public DataItem[] Data { get; set; }
    }

    [DataContract]
    public class DataItem
    {
        [DataMember(Name = "InvoiceId")]
        public int InvoiceId { get; set; }

        // Others properties
    }

你需要做的是将数组元素作为DataContract返回,将其子成员作为DataMember作为

[DataContract] 
public class mainresponse
 {
 [DataMember]
 public resultmap arrayelement { get; set; }
 }  
 [DataContract]
 public class resultmap 
{
 [DataMember] 
 public string substringhere { get; set; } 
 }     
 var djson = new DataContractJsonSerializer(typeof(Mainresponse));
 var stream = new MemoryStream(Encoding.UTF8.GetBytes(responsestring));
 mainresponse result = (mainresponse)djson.ReadObject(stream);  

它......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM