繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM