有没有人遇到过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>
答案 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?