JQuery parseJSON Tweet ID округляется Проблема и решение - PullRequest
3 голосов
/ 08 февраля 2011

Я использовал $ .getJSON JQuery для получения списка твитов, и по неизвестной причине некоторые из идентификаторов твитов были округлены от "id": 34903960418516968, до "id": 34903960418516970, Так что вместо этого я попытался использовать $ .ajax с dataType:"text", а затем сделал преобразование в JSON через parseJSON, JSON.parse и eval, которые не работали .Единственное решение, которое я нашел, было сделать тип данных ID String вместо Number, пока источник JSON все еще находится в текстовом формате.Я окружил фактический идентификатор двойными кавычками ", и для этого я использовал следующее регулярное выражение.

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 ]

1 голос
/ 08 февраля 2011

Я помню, как читал в блоге твиттера, что тип данных твиттера изменился и что разработчикам пришлось обновлять свой код. Если я правильно помню, они теперь отправляют идентификатор как строковую переменную, а также как переменную long (или float, не знаю, какая). Посмотрите на ответ и получите идентификатор из строковой переменной. Должен решить эту проблему.

РЕДАКТИРОВАТЬ: Найдено URL

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/

0 голосов
/ 24 апреля 2014

Просто откройте .csv в TextEdit, а не в Excel. Excel округлит числа, содержащие более 15 цифр, но TextEdit оставит цифры как

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