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

时间:2011-11-29 09:29:28

标签: c# .net json web-services

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

  <string xmlns="http://tempuri.org/">
  {"checkrecord":[{"rollno":"abc2","percentage":40,"attended":12,"missed":34}],"Table1":[]}
  </string> 

我看到this文章之前对我没什么帮助。

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

任何人都可以帮助我吗?

由于

5 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

您可以尝试使用REST Api构建服务。您可以在此link

中找到有关使用WCF的REST的信息

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

答案 2 :(得分:1)

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

轻松安装

答案 3 :(得分:1)

使用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 };
    }
}

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

请参阅ServiceStack's Hello World Example以查看上述网络服务的实时示例。

答案 4 :(得分:0)

更改方法中的返回

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