Twitter JSON in_reply_to_status_id неправильно - PullRequest
1 голос
/ 12 июня 2011

У кого-нибудь были проблемы с твиттерами? 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>

1 Ответ

1 голос
/ 13 июня 2011

Вместо этого используйте in_reply_to_status_id_str для объекта состояния. Схема идентификатора состояния Twitter Snowflake создает значения, превышающие максимальное целочисленное значение, поддерживаемое Javascript и некоторыми анализаторами JSON. В результате этого все числовые идентификаторы Twitter, которые могут иметь размер более 53 бит, имеют *_str дополнения к свойствам.

Из связанного документа:

Проблема

Перед запуском до нас дошло, что некоторые языки программирования такие поскольку Javascript не может поддерживать числа с> 53бит. Это может быть легко проверено с помощью команды, аналогичной до: (90071992547409921).toString() в консоль вашего браузера или запустив следующий фрагмент JSON через ваш анализатор JSON.

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

В затронутые парсеры JSON ID не будут будет преобразован успешно и будет потерять точность В некоторых парсерах есть может даже быть исключением.

Решение

Чтобы парсеры javascript и JSON могли читать идентификаторы, мы нужно включить строковую версию любой идентификатор при ответе в JSON формат. Что это означает, Статус, Пользователь, прямое сообщение и сохраненный поиск Идентификаторы в Twitter API теперь будут возвращается как целое число и строка в JSON ответы. Это будет применяться к основной Twitter API, потоковое API и API поиска.

Другие ссылки:

Какое наибольшее целочисленное значение в JavaScript может быть достигнуто числом без потери точности?
JavaScript 64-битная числовая точность
Каков приемлемый способ отправки 64-битных значений через JSON?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...