使用asp.net webservice方法:
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<MyObject> GetList()
{
....return new List of MyObject{ x = .., y = .. , z = ..};
}
使用该服务的客户端是使用JQuery Ajax调用正常工作
$.ajax({
type: "POST",
url: url,
data: data == null ? "{}" : data,
contentType: "application/json; charset=utf-8",
dataType: "json",
..... and so on ...
但是对于firebug,我注意到响应是:
{"d":[{"__type":"Common.MyObject","z":"2000","x":1500,"y":1000,"a":"0"},{"__type":"Common.MyObject","z":"2000","x":1455,"y":1199.57,"a":"1"}
...... and so on
]}
1)问题是为什么我需要这个“”__type“:”Common.MyObject“?
2)我想删除它以便响应更小,我该怎么做?
答案 0 :(得分:2)
当我将Web服务配置为这样时,它对我来说很好:
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
class MyObjectService
{
[OperationContract]
[WebGet(UriTemplate = "MyObjects", ResponseFormat = WebMessageFormat.Json)]
public IEnumerable<MyObect> GetAlMylObjects()
{
MyObjectMgr objectMgr = new MyObjectMgr();
return objectMgr.GetAll();
}
}
以下是MyObjectMgr的代码:
public class MyObjectMgr
{
public List<MyObect> GetAll()
{
List<MyObect> objList = new List<MyObect>();
objList.Add(new MyObect { x = 1, y = 21, z = 33 });
objList.Add(new MyObect { x = 4, y = 51, z = 66 });
return objList;
}
}
这是响应的样子:
[{"x":1,"y":21,"z":33},{"x":4,"y":51,"z":66}]
我使用的是GET而不是POST,但我认为这不会有任何区别。通常对于REST API,如果您只是要检索要使用GET的信息。
我已经停止使用WCF进行RESTful Web服务,因为它很难配置和使用。我已经开始使用ASP.NET Web API,这是即将发布的MVC 4.0版本的一部分。设置RESTful API要容易得多。您不必在服务中指定是否需要JSON或XML。客户端可以在HTTP标头中指定它,它应该如何工作。
答案 1 :(得分:1)
答案 2 :(得分:0)
抱歉迟到的回复!我最近遇到了类似的问题。通过执行以下操作,我能够在不重写服务的情况下修复它:
转到您的web.config文件
找到行为。
就我而言,行为被称为“Project1.Services.DataTableAspNetAjaxBehavior”,这是在
<system.serviceModel>
<behaviors>
<endpointBehaviors>
照片:
<webHttp defaultOutgoingResponseFormat="Json" />
。 (注意:如果您想保留包装,请使用添加:
<webHttp defaultBodyStyle="Wrapped" defaultOutgoingResponseFormat="Json" />
左或<webHttp defaultBodyStyle="WrappedResponse" defaultOutgoingResponseFormat="Json" />
我希望这有帮助!快乐的编码!