【问题标题】:How can browsers display JSON returned from C# Web Service浏览器如何显示从 C# Web 服务返回的 JSON
【发布时间】:2014-02-21 00:22:56
【问题描述】:

我有一个 Web 服务(C#,非 WCF)应该将 JSON 返回到移动应用程序客户端,它有一个这样的 API 函数:

[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public Animal AnimalInformation(int animalID) {
       Animal animal = new Animal();

       animal.name = AnimalNameForID(animalID);
       animal.color = AnimalColorForID(animalID);

       return animal;
}

虽然它的响应格式设置为 JSON,但它在浏览器中显示的响应仍然是 XML,像这样:

<Animal>
<Name>Vicky</Name>
<Color>Grey</Color>
</Animal>

我一直在寻找答案,发现这与客户端的接收格式有关,根据这个thread,线程建议使用这段javascript代码来查看JSON返回:

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8;",
    url: "http://MyWebServiceURL",
    data: JSON.stringify({ ParameterName: "DataToSend" }),
    dataType: "json",
    success: function (data, textStatus, jqXHR) {
        //do something
    },
    error: function (jqXHR, textStatus, errorThrown) {
        //fail nicely
    }
});

我无法让这段 js 代码工作,它总是失败。

我的问题:

1,是否可以在我的浏览器中设置任何设置,以便它从 Web 服务中请求 JSON 而不是 XML?

2,如果没有,是否有任何(简单)替代解决方案?我正在为我的应用构建这个 Web Service,但我还没有开始开发应用,所以请不要建议使用应用作为 WS 的测试客户端

【问题讨论】:

  • 您需要将响应反序列化为一个对象,然后使用该对象的值设置页面上的属性。
  • @Pathachiever11,这解决了我的问题,请将您的评论放入答案中,我会接受它作为正确答案。

标签: c# javascript .net web-services webservice-client


【解决方案1】:

看看这个:stackoverflow.com/a/19564022/487940

本质上,您希望将内容刷新到响应中并设置响应的 ContentType:

public class WebService1 : System.Web.Services.WebService
{
    [WebMethod]
    [ScriptMethod(UseHttpGet=true ,ResponseFormat = ResponseFormat.Json)]
    public void HelloWorld()
    {
        JavaScriptSerializer js = new JavaScriptSerializer();
        Context.Response.Clear();
        Context.Response.ContentType = "application/json";           
        HelloWorldData data = new HelloWorldData();
        data.Message = "HelloWorld";
        Context.Response.Write(js.Serialize(data));
    }
}

public class HelloWorldData
{
   public String Message;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 2018-01-22
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多