我需要我的网络服务才能返回JSON ...
我的.asmx文件中有以下代码:
namespace Feed
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class searchPerson : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Person GetDave()
{
Person dave = new Person();
dave.FirstName = "Dave";
dave.LastName = "Ward";
return dave;
}
}
}
返回以下内容:
<?xml version="1.0" encoding="utf-8"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<FirstName>Dave</FirstName>
<LastName>Ward</LastName>
</Person>
如何强制它返回JSON而不是XML?
答案 0 :(得分:5)
您的网络服务定义看起来是正确的。确保您通过帖子调用该服务,并记住该密钥将“内容类型”标题指定为application/json
。
(这是使用jQuery,但如果你愿意,可以使用低级javascript)
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8;",
url: "http://MyWebServiceURL",
data: JSON.stringify({ ParameterName: "DataToSend" }),
dataType: "json",
success: function (data, textStatus, jqXHR) {
//do something
},
error: function (jqXHR, textStatus, errorThrown) {
//fail nicely
}
});
答案 1 :(得分:1)
在开始之前添加以下依据:
using System.Web.Script.Services;
using System.Web.Script.Serialization;
在您的方法中使用以下代码,将任何数据转换为JSON数据格式:
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(empData);
empData是来自DataTable的DataRows数组。