2009-09-08 69 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解决了这个。这确实需要额外的步骤来遍历数据表并建立列表,但最终我认为我更快乐地返回对象列表而不是原始数据 - 无论如何,这可能是更好的做法。

相关问题