为什么我在.parseJSON之前必须使用JSON.stringify来自Google+ API的结果集?

car*_*ter 4 api jquery json google-plus

我刚刚开始使用谷歌+ API,并搜索了文档.看起来很简单.根据谷歌,他们的API调用返回json.为什么在我在jQuery中调用键值之前解析json之前必须对json进行字符串化?以下是我正在使用的代码示例:

$.ajax({
    url: "https://www.googleapis.com/plus/v1/people/{user number}/activities/public?key={my api key}",
    data: {
        "maxResults": 20,
        "verb": "post"
    },
    dataType: "json",
    type: "get",
    success: function (data) {
        var num_actual_posts = 0;
        data = $.parseJSON(JSON.stringify(data));
        var listElements = $('ul#googleFeedUL li');

        for (var i = 0; i < data.items.length; i++) {
            if (data.items[i].verb == "post") {
                $(listElements[num_actual_posts]).append(data.items[i].object.content);
                num_actual_posts++;
                if (num_actual_posts > 5) {
                    break;
                }
            }
        }
    },
    error: function (e) {
        alert(e);
    }
});
Run Code Online (Sandbox Code Playgroud)

注意:我必须拨打20个帖子,因为当出于某种原因请求"post"动词时,用户所做的"份额"也会被返回.然后我在返回的json中查找实际帖子,以便仅显示真实帖子.文档似乎也没有告诉你如何通过解释json对象层次结构来提取数据,所以我只需要通过控制台跟踪它.'data.items [i] .object.content'是google +帖子的内容.

Sir*_*rko 5

您的AJAX调用已经指定dataType: "json",因此jQuery已经将返回的JSON解析为JavaScript对象.

你应该能够放弃

data = $.parseJSON(JSON.stringify(data));
Run Code Online (Sandbox Code Playgroud)

完全data是你想要的对象.