2012-04-25 118 views
3

我需要從內部JSON子陣列獲取的數據,但它沒有得到轉換成列表,下面是我的JSON字符串反序列化JSON數組列出WP7

{「responseCode」:「0」,「responseObject」 :{「TotalRecords」:25,「TotalDisplayRecords」:25,「aaData」:[{「InvoiceId」:16573,「somedata ..」,「appCrmAccount(一些標題,總共100個這樣的標題) amount」:40086.00, invoiceNumber 「:」 12,帳戶名 「:」 dfgAsfsadf 「」 dueDateStr 「:」 2012" 年4月24日(數據將進入名單)

這裏是我的代碼:

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

善意幫助.. 在此先感謝。

+0

你是什麼意思沒有得到執行?一個錯誤?例外? – 2012-04-25 05:10:25

+0

你能在這裏發佈類「dataList」的代碼嗎?你使用DataContract和DataMember屬性嗎? – 2012-04-25 07:52:51

回答

0

究竟你需要做的是採取數組元素回報爲DataContract及其子成員的數據成員作爲

[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); 

,它...

1

試試這個

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

,需要解析返回的JSON如下。在創建DataContractJsonSrrializer實例的參數中,我們傳遞了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; 
} 
0

您應該標記所有類和屬性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 
    } 
+0

謝謝,它的工作.. – Anand 2012-05-07 09:37:43

+1

標記爲答案,請,如果是。 – 2012-05-10 08:04:38

+0

我有類似的問題,但這不適用於數組...雖然我不明白這是什麼:Name =「aaData」? – 2012-05-11 14:38:46