当前位置: 首页 > 面试题库 >

Javascript无法正确解析JSON中的大量数字

常培
2023-03-14
问题内容

我正在以JSON格式传回来自网络服务器的批准推文列表。当我转到URL:时,http://localhost:8000/showtweets/?after_id=354210796420608003在我的浏览器中得到以下JSON:

   [{
    "date": "2013-07-08T12:10:09",
    "text": "#RaspberryPi ist auf dem Weg :-)",
    "author_pic_url": "http://a0.twimg.com/profile_images/1315863231/twitter_normal.jpg",
    "id": 354210796420608004,
    "author": "switol"
}]

其ID为:354210796420608004

当我从Javascript进行GET调用时,数字发生变化:

function TweetUpdater() {
}

TweetUpdater.latest_id = 0;
TweetUpdater.undisplayed_tweets = new Array();

TweetUpdater.prototype.get_more_tweets = function () {
    // var since_id = parseFloat(TweetUpdater.get_latestlatest_id;
    // alert(since_id);
    var get_tweets_url = "/showtweets/?after_id="+TweetUpdater.latest_id;
    $.get(get_tweets_url, function (tweets) {
        if (tweets.length > 0) {

            /////////////////////////////////////////////////////////
            alert(tweets[0].id+", "+ tweets[0].text); <<<<< THIS LINE
            /////////////////////////////////////////////////////////

            TweetUpdater.latest_id = tweets[0].id;
            for (var i = 0; i < tweets.length; i++) {
                TweetUpdater.undisplayed_tweets.push(tweets[i]);
            }
        }
    }, "json");
};

此代码提醒: 354210796420608000, #RaspberryPi ist auf dem Weg :-)

354210796420608004!= 354210796420608000

很奇怪。


问题答案:

不,不是很奇怪。JS将所有数字表示为双精度数字,并且随着整数的增大,您有时会失去精度。

要解决该问题,只需将id其设为字符串-
无论如何您都不会使用该字符串进行计算。不过,您必须在原始JSON中执行此操作,否则精度损失JSON.parse已经发生。



 类似资料:
  • GSON不是在一开始就解析我传递的整个JSON字符串吗?因此,最终,我希望新的数据源是对象。那可行吗?

  • 我希望有人能帮我解决这个问题。 我想用WebClient创建一个Rest客户端,从API中检索响应。所以我创建了我的Spring项目,添加了webflux、lombok和h2。我还创建了一个DTO类“CashAccount”和以下方法: 当我使用“.bodyToMono(String.class)”时,所有的功能都很好,我收到了结果: 相反,当我使用“.bodyToMono(cashcount.c

  • 在Rails中,我查询数据库以构建highcharts的数据对象。 这是我的控制器中的方法: 终止 现在,在我看来,我正试图在一个脚本中把它拉出来。 ---脚本--- ---脚本--- 当我打印到控制台时,我可以看到对象及其所有数据。此外,当我打印到html时,输出看起来是正确的: "[{\"名称\":\"原 但是当我去打印数据变量时,它是null(显然是由于不是有效输入)。我搞砸了什么?

  • 我不知道为什么我的json解析不起作用。这是我正在使用的Api。还有完整json输出的链接http://api.openweathermap.org/data/2.5/forecast/daily?zip=85008 我试图得到每天的最低和最高温度。这是我的代码。引发的异常应该是BEGIN_OBJECT,但在第1行第190列编号。任何帮助不胜感激,谢谢!

  • 我试图获取一个JSON响应,并将结果存储在一个变量中。我在以前的Swift版本中使用过这个代码版本,直到Xcode8的GM版本发布。我在StackOverflow上看了几篇类似的文章:Swift 2 Parsing JSON-Cant下标类型为“anyObject”的值和Swift 3中的JSON Parsing。 然而,这里所传达的思想似乎不适用于这种情况。 如何正确解析Swift3中的JSON

  • 问题内容: 我正在尝试获取JSON响应并将结果存储在变量中。在以前的Swift版本中,我已经使用过此代码的版本,直到Xcode 8的GM版本发布为止。我在StackOverflow上看到了一些类似的文章:Swift 2解析JSON- 无法 在Swift 3中下标’AnyObject’类型的值和JSON解析。 但是,似乎此处传达的想法不适用于这种情况。 如何在Swift 3中正确解析JSON响应?在