使用C#.NET制作JSON Web服务

我想在C#.NET中创建JSON Web服务。 一个json字符串通过web方法返回,但它包含xml结构,如:

 {"checkrecord":[{"rollno":"abc2","percentage":40,"attended":12,"missed":34}],"Table1":[]}  

我之前看到这篇文章对我没有多大帮助。

所以我的问题是,json字符串不以纯格式返回。 我不想要那个xml版本和xmlns字符串。 我计划稍后在Android上使用网络服务。

谁能帮我?

谢谢

如果使用请求和响应格式的属性修饰接口,则可以获得标准WCF以返回并解释正确的json。

  [WebGet(UriTemplate = "user/{userid}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 

但问题是,WCF的先天DataContractJsonSerializer并不总是返回正确的json。 它的字典序列化充其量是有问题的,因为它被序列化为键/值对的列表。 要解决此问题,必须从服务方法返回Stream并手动执行序列化(使用Json.NET或ServiceStack执行序列化)。 在这种情况下,建议使用WebAPI,但在某些情况下,可以使用上述装饰来使用常规WCF。

您可以尝试使用REST Api构建服务。 您可以在此链接中找到有关使用WCF的REST的信息

您可以下载有关如何构建返回json响应的restful wcf服务的示例工具包。

如果您计划创建REST服务,则值得学习WCF Web API 。 它可以通过Nuget或Codeplex轻松安装

这在使用ServiceStack时也不是问题,即您返回的每个结果都会自动转换为您想要的Response ContentType,即这是一个简单的Web服务的完整代码,可以通过所有HTTP VERBS调用(GET,POST,PUT) ,DELETE)所有支持的格式(无需配置),即JSON,XML,HTML,JSV,CSV,SOAP,即使是直接HTML表单x-www-form-urlencoded或QueryString请求:

 public class Hello { public string Name { get; set; } } public class HelloResponse { public string Result { get; set; } } public class HelloService : IService { public object Execute(Hello request) { return new HelloResponse { Result = "Hello, " + request.Name }; } } 

您可以使用Accept:application / json HTTP Header覆盖您获得的响应,或者只是在QueryString上添加?format = json

请参阅ServiceStack的Hello World示例以查看上述Web服务的实例。

改变方法的回报

  Context.Response.Write(ans); Context.Response.End();