我使用JQuery的$ .getJSON来检索推文列表,并且由于未知原因,一些推文ID被舍入
"id": 34903960418516968,
到"id": 34903960418516970,
所以我尝试将$ .ajax与dataType:“text”一起使用,然后通过 parseJSON,JSON.parse和eval转换为JSON,这些都不起作用。
我找到的唯一解决方案是使ID字符串的数据类型而不是数字,而JSON源仍然是文本格式。我用双引号包围了实际ID“并且我使用了以下正则表达式来执行此操作。
data = data.replace(/\"id\": (\d{15,}),/gi, "\"id\": \"$1\",");
ajax call
$.ajax({
async: true,
url: tweetsUrl,
dataType: "text",
success: getTweetsResult
});
getTweetsResult
function getTweetsResult(data, textStatus, xhr){
//remove trailing ,
data = data.substring(0, data.lastIndexOf(",]")) + "]";
//convert tweet.id to string because the eval of JS is rounding up some of the number
data = data.replace(/\"id\": (\d{15,}),/gi, "\"id\": \"$1\",");
//console works with Chrome
// console.log(data);
var tweetList = $.parseJSON(data);
generateTweets("tweets", "tweetGrid", tweetList, 3, tweets);
applyRollOverGridItems();
}
答案 0 :(得分:1)
我记得在Twitter博客上看到Twitter ID数据类型已经改变,开发人员必须更新他们的代码。如果我没记错的话,他们现在将ID作为字符串变量以及long(或float,不确定哪个)变量发送。查看响应,并从字符串变量中获取ID。应该解决这个问题。
编辑:找到了网址
http://groups.google.com/group/twitter-development-talk/browse_thread/thread/6a16efa375532182?pli=1
http://blog.programmableweb.com/2010/10/19/the-twitter-id-shuffle-text-vs-numbers/
答案 1 :(得分:-2)
只需在TextEdit中打开.csv而不是在Excel中。 Excel将对超过15位的数字进行舍入,但TextEdit将保留数字