2012-04-16 78 views
1

我最近使用C#構建Web服務客戶端。我選擇C#是因爲Web服務組件功能強大且簡單(比Gsoap或Axis IMO更容易使用)。C#Web服務響應數組

我的C#應用​​程序在後臺運行,並應返回的數據,我的應用程序(其中包括一個Web應用程序,一個PLC和數據庫)的其他部分可以存儲和使用。

我的答覆是這個樣子:

[ 
[ 
    string 
    int 
    [] 
] 
string 
[] 
int 
] 

等等

的一點是,返回值並不簡單。我的問題是從我的應用程序的其他部分重新格式化和使用這些數據的最佳方式是什麼?

我的選擇是:

  1. XML
  2. JSON

我已經簽出兩條路線,並沒有發現一個偉大的方式序列化此數據。任何人都可以提供建議嗎?

最糟糕的情況我可能需要創建一個用StringBuilder構建XML的通用例程,但我希望還有一些我還不知道的事情(我是C#的新手),這會讓我的生活變得輕鬆。

+0

您的Web服務客戶端是否序列化您的應用程序的其餘部分使用的數據?其他應用程序正在進行中嗎?如果是這樣,爲什麼序列化和反序列化它呢?你可以在對象模型中表示數據,並只傳遞那些/那些對象? – JMD 2012-04-16 22:06:02

+0

這是什麼樣的網絡服務? ASMX或WCF? – 2012-04-16 22:12:07

+0

@JMD我的應用程序的其餘部分不在C#中(混合使用PHP和C),因此C#對象將無法工作 – 2012-04-17 02:20:22

回答

2

你肯定可以使用JSON。

使用JavaScriptSerializer類序列化的數據和OK:http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

var data = new { name = "someValue", id = 1 }; 

var json = new System.Web.Script.Serialization.JavaScriptSerializer(); 

return json.Serialize(data); 

我沒有測試此代碼(我不是在我的dev的機器現在),但我敢肯定它根據您的需求進行一些調整。

+0

這很好。我之前嘗試過這種方法,但似乎無法使Services.Web.Extensions正常工作。我給了它另一個鏡頭,發現這個帖子:http://stackoverflow.com/questions/1987733/system-web-extensions-assembly-cannot-be-resolved謝謝很多人! – 2012-04-17 13:23:14

1

爲什麼不爲返回值創建DTO類並使用JSON或XML序列化?這非常方便。