2013-10-02 87 views
0

我有一個反序列化webmethod,它返回webservice(asmx)中的數據列表,我從客戶端調用該方法。然而,該方法給了我一個數組,而不是一個列表。我明白,這是因爲SOAP響應返回XML格式(或類似的東西..)
是否有可能返回一個列表?如果有的話,請告訴我一個想法。
如果沒有,請教我一種替代方法。 (我不應該使用數組...)Webservice(asmx)返回數組,而不是列表

service.asmx.cs

[WebMethod] 
public IList<Person> DeserializeJson(string value) 
{ 
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     IList<Person> tableData = js.Deserialize<IList<Person>>(value); 

     return tableData; 
} 

Client.aspx.cs(WebService的是我的服務引用)

WebService.Service1SoapClient client = new WebService.Service1SoapClient(); 
string stream = client.CreateJsonFromDatabase(); 
List<WebService.Person> tableData = client.DeserializeJson(stream); 
+0

ASMX是一項傳統技術,不應該用於新開發。 WCF應該用於Web服務客戶端和服務器的所有新開發。一個暗示:微軟已經在MSDN上退役了[ASMX Forum](http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/threads)。 –

+0

而不是使用ASMX,我應該遵循哪種類型的技術? MVC? – Adrian

+0

WCF是ASMX的替代品(並且做得更多,更多)。 –

回答

0

Web服務不回數組,並且它們不返回列表。他們返回XML。它們返回的XML被客戶端代碼解釋爲列表,數組或其他。

如果您使用「添加服務引用」來使用此服務,那麼您將可以選擇如何處理XML中的重複元素。您可以從List,Array或其他幾個選項中進行選擇。

+0

謝謝約翰!那麼,你是說我可以將XML轉換爲List,Array等的選擇? – Adrian

+0

我可以看到,client.DeserializaJson(流)返回「Client_Projet_Name.WebService.ActivityFlatTableColumns []」的類型,這是我的理解,這是一種數組?我想我迷路了。你能給我舉個例子嗎? – Adrian

+0

請閱讀我的博客文章「[如何使用Web服務](http://johnwsaunders3.wordpress.com/2009/05/17/how-to-consume-a-web-service/)」,看看它是否幫助你。此外,「[基礎:Web服務如何工作](http://johnwsaunders3.wordpress.com/2008/09/23/basics-how-web-services-work/)」直接解決XML問題。 –