[英]How to return datatable / dataset from c# web service as JSON
我有Web服务通过使用返回字符串作为JSON
[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
并使用标题Content-type = application / json从客户端调用它们
这一切都很顺利,直到我需要返回结果表。
我已经尝试使用这里的代码http://www.west-wind.com/Weblog/posts/471835.aspx ,它成功地将我的数据集编码为JSON并返回一个字符串,但这又转换为带有转义符的一部分从.net服务返回,这根本不是想要的。 我的WebMethod应该返回什么类型才能将数据表或数据集正确编码为JSON?
简短回答,在字符串上使用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>
我通过创建一个自定义类来解决这个问题,该类表示我需要返回的数据,然后将服务的返回类型设置为List。 这确实需要一个额外的步骤来遍历数据表并构建列表,但最后我认为我更乐意返回对象列表而不是原始数据 - 无论如何它可能是更好的做法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.