JSON Numbers
I've seen two recent posts* about numbers in JSON, but the numbers they give don't fail for me. I'm curious what platforms / parsers do error on these numbers. *http://lethargy.org/~jesus/writes/why-json-sucks and http://groups.google.com/group/twitter-api-announce/browse_thread/thread/6a16efa375532182
by John Schulz
HTML
<div id="output"></div>
JavaScript
if ('JSON' in window){ addJSON(); }
var tests = {
// From http://lethargy.org/~jesus/writes/why-json-sucks
jesus: '{"id": 4611686018427387900}',
// From http://groups.google.com/group/twitter-api-announce/browse_thread/thread/6a16efa375532182
twitter_str: '{"id": ' + (90071992547409921).toString() + '}',
twitter_obj: '{"id": 10765432100123456789}'
};
log('maximum:', Number.MAX_VALUE);
for (var id in tests) {
try {
var obj = JSON.parse(tests[id]);
log(id, 'PASS:', obj.id);
track(id);
} catch (err) {
log(id, 'FAIL:', err);
track(id, err);
}
}
function track(id, err)
{
var img = new Image();
var bin = 'http://www.postbin.org/130y0e3';
var url = bin + '?id=' + id + '&ua=' + encodeURIComponent(navigator.userAgent);
url += '&result=' + (err ? 'fail' : 'pass');
img.src = url;
document.body.appendChild(img);
}
function log()
{
var msg = [].slice.call(arguments).join(' ');
if (!log.el) {
log.el = document.getElementById('output');
}
log.el.innerHTML += '<p>' + msg + '</p>';
}
function addJSON()
{
var url = 'http://gist.github.com/raw/633485/1186a6dc681bfda5824f3067934dd62490c1cb9f/json2.js';
var script = document.createElement('script');
script.src = url;
document.body.appendChild(script);
}