如何使用 Web API 处理 JSON? [复制]

2023-12-02

可能的重复:
JSONP 与 MVC 4 WebApi

我的 WebAPI 有一个 get 方法,如下所示:

    private T Get<T>(string uri)
    {
        T result = default(T);
        bool isSuccess = true;

        client
            .GetAsync(uri)
            .ContinueWith(task =>
            {
                // EnsureStatus
                isSuccess = task.Result.IsSuccessStatusCode;
                task
                .Result
                .Content
                .ReadAsAsync<T>()
                .ContinueWith(t => result = t.Result)
                .Wait();
            })
            .Wait();
       return result;
     }

结果以 JSON 格式生成,但我想要 JSONP 格式。

我读过ReadAsSync仅处理内置媒体格式化程序。那么有什么方法可以改变它来处理 JsonP 吗?


大肆盗窃这个重复的....

为了实现你想要的,你需要三件事:

  1. 添加一个media formatter输出 JSONP
  2. 注册媒体格式化程序(传统上通过 global.asx 完成)
  3. 确保客户端请求 jsonP。

你可以窃取这个 JSONP 媒体格式化程序.

然后,您需要注册媒体格式化程序。您可以使用以下代码片段以编程方式执行此操作:

var config = GlobalConfiguration.Configuration;
config.Formatters.Insert(0, new JsonpMediaTypeFormatter());

由于您显然不使用 global.asax,因此您需要确保格式化程序以某种方式注册。您没有提供足够的信息来说明如何做到这一点,但我怀疑明智地放置 IF 语句和指示注册的静态变量可以让您到达那里。

我仍然不太知道你正在使用什么类型的客户端,但如果它是 jquery ,类似下面的东西会让你到达那里:

$.ajax({
    url: 'http://myurl.com',
    type: 'GET',
    dataType: 'jsonp',
    success: function (data) {
        alert(data.MyProperty);
    }
})

重要的部分是accept发送的标头与您闪亮的新 jsonp 格式化程序正在侦听的接受标头相匹配。我认为最重要的两个选择是:application/javascript or text/javascript.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Web API 处理 JSON? [复制] 的相关文章

随机推荐