2009-09-08 72 views
4

我有Web服務返回的字符串作爲JSON通過力使用如何從C#web服務返回的數據表/數據集作爲JSON

 
[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 

,並從客戶端調用它們用頭內容類型=應用程序/ JSON

這一切都很順利,直到我需要返回一個結果表。

我已經在這裏使用的代碼 http://www.west-wind.com/Weblog/posts/471835.aspx 它成功地編碼我的數據集作爲JSON並返回一個字符串嘗試,但這反過來然後逃逸編碼爲從.NET服務返回的部分是不是有什麼想要的。我的WebMethod應該返回什麼類型以獲取正確編碼爲JSON的數據表或數據集?

回答

3

簡短的回答,對字符串使用eval如:var ds = eval(responseText);.

我使用Microsoft.Web.Preview.dll而不是Newtonsoft。我覺得Newtonsoft比微軟的代碼多一點。它發送給你一個字符串,而不是一個JSON對象。而在Microsoft中,您不需要編寫所有額外的代碼。下載Microsoft.Web.Preview.dll(名爲ASP.NET Futures)。下面添加到你的web.config:

<system.web.extensions> 
    <scripting> 
     <webServices> 
      <jsonSerialization maxJsonLength="33554432"> 
       <converters> 
        <add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/> 
        <add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/> 
        <add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/> 
       </converters> 
      </jsonSerialization> 
     </webServices> 
    </scripting> 
</system.web.extensions> 
+0

簡短的回答假設我使用JavaScript作爲客戶端。它其實是一個iPhone應用程序。類似的東西可能工作,但JSON編碼的JSON聽起來像一個壞主意。我將嘗試ASP.NET的未來技術,並看看我得到了什麼。 – Andiih 2009-09-09 07:31:09

+0

我懷疑這會起作用,但我不確定依靠期貨的穩定性。 – Andiih 2009-09-10 08:30:56

+0

我已經將此標記爲正確答案,因爲儘管最終我選擇了另一條路線,但我認爲這可能是最佳答案。謝謝Abibaby – Andiih 2009-09-14 07:10:33

0

我已經通過創建代表我需要返回的數據自定義類,然後該服務的返回類型設置爲一個List解決了這個。這確實需要額外的步驟來遍歷數據表並建立列表,但最終我認爲我更快樂地返回對象列表而不是原始數據 - 無論如何,這可能是更好的做法。

相關問題