首页 > 解决方案 > 解析ajax json响应

问题描述

我无法获取 JSON 对象的数据。

这是我的 API 操作:

    public string GetVideoInfo(uint videoID)
    {
        ApiVideoInfo videoInfo = new ApiVideoInfo()
        {
            Likes = BitVidDb.GetLikes(videoID),
            Dislikes = BitVidDb.GetDislikes(videoID),
            Views = BitVidDb.GetViews(videoID),
        };

        return JsonConvert.SerializeObject(videoInfo);
    }

如果我在浏览器中调用 API,它会返回:

"{\"查看次数\":396,\"喜欢\":1,\"不喜欢\":0}"

但是,当我调用这个 ajax 函数时:

    $.ajax({
        url: '/API/Video/GetVideoInfo/25',
        dataType: 'application/json',
        complete: function (data) {
            var json = JSON.parse(data);
            alert(json["Views"]);
        },
    });

它给了我以下错误:

SyntaxError:JSON.parse:JSON 数据的第 1 行第 2 列出现意外字符

我使用 JSON.stringify 将其转换为字符串并输出:

{"readyState":4,"responseText":"\"{\\"Views\\":396,\\"喜欢\\":1,\\"不喜欢\\":0}\"","状态":200,"statusText":"OK"}

我需要采取一些额外的步骤来获取这些值吗?该请求似乎很好 Chrome 开发工具将其作为 api 的答案:

JSON {“视图”:396,“喜欢”:1,“不喜欢”:0}

提前致谢

标签: asp.netjsonajaxasp.net-web-api

解决方案


您只能解析字符串,而数据是一个对象。要将 json 作为字符串,我只需要使用 data.responseText 代替。

$.ajax({
    url: '/API/Video/GetVideoInfo/25',
    dataType: 'application/json',
    complete: function (data) {
        var json = JSON.parse(data.responseText);
        alert(json["Views"]);
    },
});

推荐阅读