【问题标题】:Twitter JSON in_reply_to_status_id wrongTwitter JSON in_reply_to_status_id 错误
【发布时间】:2011-06-12 08:12:53
【问题描述】:

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

似乎每次都将我的最后一个数字四舍五入为 0。如果您运行此代码,它应该会提示您回复消息的网址,但最后一个数字始终为 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>

【问题讨论】:

  • “我的天哪,我无法弄清楚如何简单地粘贴代码” 您只需将代码缩进四个空格,正如 如何到问题区域右侧的格式框。
  • 谢谢,我想我已经因为这个错误而感到压力了。

标签: javascript twitter


【解决方案1】:

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

来自链接的文档:

问题

在发布之前,我们注意到一些编程语言,例如 因为 Javascript 不支持数字 > 53位。这可以很容易 通过运行类似的命令进行检查 至:(90071992547409921).toString() 在 您的浏览器控制台或通过运行 以下 JSON sn-p 通过 你的 JSON 解析器。

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

在 受影响的 JSON 解析器,ID 不会 成功转换并将 失去准确性。在某些解析器中 甚至可能是个例外。

解决方案

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 2011-10-05
    • 2021-03-20
    • 2020-10-25
    • 2016-12-01
    • 2014-05-08
    • 2020-12-06
    相关资源
    最近更新 更多