JQuery parseJSON Tweet ID向上舍入问题和解决方案

时间:2011-02-08 10:25:28

标签: jquery ajax json

我使用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();
}

2 个答案:

答案 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将保留数字