Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 为什么我必须先JSON.stringify,然后才能解析来自Google+;应用程序编程接口?_Jquery_Json_Api_Google Plus - Fatal编程技术网

Jquery 为什么我必须先JSON.stringify,然后才能解析来自Google+;应用程序编程接口?

Jquery 为什么我必须先JSON.stringify,然后才能解析来自Google+;应用程序编程接口?,jquery,json,api,google-plus,Jquery,Json,Api,Google Plus,我刚开始玩google+API,并浏览了文档。这似乎很直截了当。根据谷歌的说法,对其API的调用会返回json。那么为什么我必须在解析json之前对json进行字符串化,然后才能调用jQuery中的键值呢?下面是我正在使用的代码示例: $.ajax({ url: "https://www.googleapis.com/plus/v1/people/{user number}/activities/public?key={my api key}", data: {

我刚开始玩google+API,并浏览了文档。这似乎很直截了当。根据谷歌的说法,对其API的调用会返回json。那么为什么我必须在解析json之前对json进行字符串化,然后才能调用jQuery中的键值呢?下面是我正在使用的代码示例:

$.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);
    }
});
$.ajax({
url:“https://www.googleapis.com/plus/v1/people/{user number}/activities/public?key={my api key}”,
数据:{
“最大结果”:20,
“动词”:“post”
},
数据类型:“json”,
键入:“获取”,
成功:功能(数据){
var num_实际_posts=0;
data=$.parseJSON(JSON.stringify(data));
var列表元素=$('ul#googleFeedUL li');
对于(变量i=0;i5){
打破
}
}
}
},
错误:函数(e){
警报(e);
}
});

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

您的AJAX调用已经指定了
数据类型:“json”
,因此jQuery已经将返回的json解析为JavaScript对象

你应该可以放弃

data = $.parseJSON(JSON.stringify(data));

总之,
数据
已经是您想要的对象。

是的,这看起来很奇怪!我想你不应该这么做。如果你注释掉那一行会发生什么:
data=$.parseJSON(JSON.stringify(data))