Twitter JSON in_reply_to_status_id错误

时间:2011-06-12 08:12:54

标签: javascript twitter

有没有人遇到过twitters json的问题.in_reply_to_status_id

似乎每次都将我的上一个数字四舍五入为0。如果您运行此代码,它应该提示您回复消息的位置的URL,但最后一个数字始终为0.我对javascript很新,但认为它可能是一个数字有多大的东西。任何帮助赞赏。谢谢:))

<!-- language: lang-js -->
<script type="text/javascript">
 function twitterCallback(twitters) {
  var statusHTML = [];
  for (var i=0; i<twitters.length; i++){
    var username = twitters[i].user.screen_name;
    var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
       return '<a href="'+url+'" target="_blank" rel="nofollow">'+url+'</a>';
    }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
      return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'" target="_blank" rel="nofollow">'+reply.substring(1)+'</a>';
    });

    if(twitters[i].in_reply_to_screen_name){
        alert('http://twitter.com/'+twitters[i].in_reply_to_screen_name+'/status/'+twitters[i].in_reply_to_status_id);
    }
  }
}
</script>
<script type="text/javascript" src="http://api.twitter.com/1/statuses/user_timeline.json?screen_name=PacSun&include_rts=true&count=15&callback=twitterCallback"></script>

1 个答案:

答案 0 :(得分:1)

使用状态对象上的in_reply_to_status_id_str代替。 Twitter的Snowflake状态ID方案产生的值大于Javascript和一些JSON解析器支持的最大整数值。因此,所有可能超过53位的数字Twitter ID都有*_str属性补充。

来自链接文件:

  

问题

     

在发布之前,我们注意到了一些编程语言   因为Javascript无法支持数字   &gt; 53bits。这很容易   通过运行类似命令来检查   to:(90071992547409921).toString() in   浏览器的控制台或运行   通过以下JSON代码段   你的JSON解析器。

{"id": 10765432100123456789, "id_str": "10765432100123456789"}  
     

在   受影响的JSON解析器ID不会   成功转换,意志   失去准确性。在那里的一些解析器   甚至可能是一个例外。

     

解决方案

     

允许javascript和JSON解析器读取我们的ID   需要包含一个字符串版本   在JSON中响应时的任何ID   格式。这意味着状态,   用户,直接消息和保存的搜索   Twitter API中的ID现在将是   以整数和字符串形式返回   JSON响应。这将适用于   主要的Twitter API,Streaming   API和搜索API。

其他链接:

What is JavaScript's highest integer value that a Number can go to without losing precision?
JavaScript 64 bit numeric precision
What is the accepted way to send 64-bit values over JSON?