从ASP.NET web服务ASMX文件获取JSON
我正在使用ASP.NET,C#创建一个web服务,目前它提供XML,但我将获得JSON,这是我创建webmtheod的方式:从ASP.NET web服务ASMX文件获取JSON,asp.net,xml,json,web-services,Asp.net,Xml,Json,Web Services,我正在使用ASP.NET,C#创建一个web服务,目前它提供XML,但我将获得JSON,这是我创建webmtheod的方式: [Webservice(Namespace="http://myurl)] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfiles_1)] [System.ComponentModel.ToolboxItem(false)] [WebMehod] public string myfunction() { st
[Webservice(Namespace="http://myurl)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfiles_1)]
[System.ComponentModel.ToolboxItem(false)]
[WebMehod]
public string myfunction()
{
string r = "......";
return r;
}
它们位于ASMX文件中,我在浏览器中将其称为如果您希望从方法返回JSON,则需要使用ScriptMethod属性
[WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string MyMethod()
{
}
请注意[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
属性
[WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string MyMethod()
{
}
目前,此方法正在返回一个字符串
,它可以是JSON
结构化字符串。但是,您最好返回一个对象,该对象可以解析为JSON
<代码>列表以及具有标准数据类型的类,如整数
,字符串
等,都非常适合于此。然后,您可以只返回该对象。ScriptMethod
负责将其转换为JSON
例如:
要返回的类:
public class MyJson
{
public int ID;
public List<string> SomeList;
public string SomeText;
}
returnJSON
的结构与类类似。属性名称也将被使用,并且您的列表
将成为一个数组
使用AJAX调用这个函数。JQuery在本例中:
$(document).ready(function(){
$.ajax({
type: "POST",
url: "/YourPage.aspx/MyMethod",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
// content will be in here... I.E
var id = msg.d.ID;
var st = msg.d.SomeText;
var sl = msg.d.SomeList;
var i = sl.length;
var firstSlItem = sl[0];
}
});
});
如果希望从方法返回JSON,则需要使用ScriptMethod属性
[WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string MyMethod()
{
}
请注意[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
属性
[WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string MyMethod()
{
}
目前,此方法正在返回一个字符串
,它可以是JSON
结构化字符串。但是,您最好返回一个对象,该对象可以解析为JSON
<代码>列表以及具有标准数据类型的类,如整数
,字符串
等,都非常适合于此。然后,您可以只返回该对象。ScriptMethod
负责将其转换为JSON
例如:
要返回的类:
public class MyJson
{
public int ID;
public List<string> SomeList;
public string SomeText;
}
returnJSON
的结构与类类似。属性名称也将被使用,并且您的列表
将成为一个数组
使用AJAX调用这个函数。JQuery在本例中:
$(document).ready(function(){
$.ajax({
type: "POST",
url: "/YourPage.aspx/MyMethod",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
// content will be in here... I.E
var id = msg.d.ID;
var st = msg.d.SomeText;
var sl = msg.d.SomeList;
var i = sl.length;
var firstSlItem = sl[0];
}
});
});
另一种方法是使用
JavaScriptSerializer
将JSON作为字符串返回:
[System.Web.Services.WebMethod()]
public string GetItems() {
List<string> listOfItems = new List<string> {"asdf", "qwerty", "abc", "123"};
JavaScriptSerializer js = new JavaScriptSerializer();
string json = js.Serialize(listOfItems);
return json;
}
…然后您必须在javascript/jQuery中解析结果,如下所示:
var result = "";
$.ajax({
// ...other properties defined here...
success: function (response) {
result = JSON.parse(response.d);
}
});
// the List<string> has been parsed into an array:
for (var i = 0, len = result.length; i < len; i++) {
alert(result[i]);
}
var结果=”;
$.ajax({
//…此处定义的其他属性。。。
成功:功能(响应){
result=JSON.parse(response.d);
}
});
//列表已解析为数组:
for(变量i=0,len=result.length;i
如果您以同样的方式转换一个类的实例,比如这里的@Darren示例,那么它将被解析为javascript对象文本。
还要注意,在
.asmx
文件中,webmethods被声明为公共实例方法,而不是.aspx
文件中的公共静态方法。
另一种方法是使用JavaScriptSerializer
将JSON作为字符串返回:
[System.Web.Services.WebMethod()]
public string GetItems() {
List<string> listOfItems = new List<string> {"asdf", "qwerty", "abc", "123"};
JavaScriptSerializer js = new JavaScriptSerializer();
string json = js.Serialize(listOfItems);
return json;
}
…然后您必须在javascript/jQuery中解析结果,如下所示:
var result = "";
$.ajax({
// ...other properties defined here...
success: function (response) {
result = JSON.parse(response.d);
}
});
// the List<string> has been parsed into an array:
for (var i = 0, len = result.length; i < len; i++) {
alert(result[i]);
}
var结果=”;
$.ajax({
//…此处定义的其他属性。。。
成功:功能(响应){
result=JSON.parse(response.d);
}
});
//列表已解析为数组:
for(变量i=0,len=result.length;i
如果您以同样的方式转换一个类的实例,比如这里的@Darren示例,那么它将被解析为javascript对象文本。
还要注意,在.asmx
文件中,webmethods被声明为公共实例方法,而不是.aspx
文件中的公共静态方法。
此函数返回XML输出,但我要获取JSON,如何获取JSON?我想我应该使用.NET序列化函数,但是如何使用呢?这个函数返回我的XML输出,但是我要得到JSON,我如何才能得到JSON?我想我应该使用.NET序列化函数,但是如何使用呢?谢谢,但我似乎仍然在使用XML(它现在的结构与我的类类似),我应该如何在浏览器中调用我的Web服务以获得json输出?使用AJAX调用它,确保将数据类型指定为json。我将添加一些示例代码。如果它仍然返回AJAX,那么请查看此页面-如果他们有帮助,请不要忘记将所有答案标记为已回答,如果其他答案也有帮助,请向上投票。谢谢,但似乎我仍然得到一个XML(它现在的结构与我的类类似),我应该如何在浏览器中调用我的Web服务以获得json输出?使用AJAX调用它,确保将数据类型指定为JSON。我将添加一些示例代码。如果它仍然返回AJAX,请查看此页面-不要忘记,如果它们有帮助,请将所有答案标记为已回答,如果其他答案也有帮助,请向上投票。