[英]Making of JSON Webservice using C# .NET
我正在尝试在C#.NET中创建JSON Web服务。 一个json字符串通过web方法返回,但它包含xml结构,如:
<string xmlns="http://tempuri.org/">
{"checkrecord":[{"rollno":"abc2","percentage":40,"attended":12,"missed":34}],"Table1":[]}
</string>
我之前看到这篇文章对我没有多大帮助。
所以我的问题是,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,即这是可以通过所有HTTP VERBS调用的简单Web服务的完整代码(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<Hello> {
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.