Force Json.stringify() To Emit Nan / Infinity Or Js Json Lib That Does So
I'm looking into the feasibility of adding NaN/Infinity support to a pre-existing scientific application that uses JSONRPC for client/server interactions. Many JSON libs do handle
Solution 1:
Here is an example
Javascript
var array1 = [-Infinity, -1, 0, 1, 2, NaN, 4, 5, Infinity],
json = JSON.stringify(array1, function (key, value) {
if (value !== value) {
return'NaN';
}
if (value === Infinity) {
return'Infinity';
}
if (value === -Infinity) {
return'-Infinity';
}
return value;
}),
array2 = JSON.parse(json, function (key, value) {
if (value === 'NaN') {
return NaN;
}
if (value === 'Infinity') {
return Infinity;
}
if (value === '-Infinity') {
return -Infinity;
}
return value;
});
console.log(json);
console.log(array2);
Output
["-Infinity",-1,0,1,2,"NaN",4,5,"Infinity"][-Infinity, -1, 0, 1, 2, NaN, 4, 5, Infinity]
References
On jsFiddle
Update:
Javascript
var array1 = [-Infinity, -1, 0, 1, 2, NaN, 4, 5, Infinity],
json = JSON.stringify(array1, function (key, value) {
if (value !== value) {
return'0/0';
}
if (value === 1/0) {
return'1/0';
}
if (value === -1/0) {
return'-1/0';
}
return value;
}),
array2 = JSON.parse(json, function (key, value) {
if (value === '0/0') {
return0/0;
}
if (value === '1/0') {
return Infinity;
}
if (value === '-1/0') {
return -1/0;
}
return value;
});
console.log(json);
console.log(array2);
Output
["-1/0",-1,0,1,2,"0/0",4,5,"1/0"][-Infinity, -1, 0, 1, 2, NaN, 4, 5, Infinity]
On jsFiddle
Solution 2:
replacement
parameter of JSON.stringify
is quite right tool for the job.
JSON.stringify(data, function(key, value) {
if (value === Infinity) {
return"Infinity";
} elseif (value === -Infinity) {
return"-Infinity";
} elseif (value !== value) {
return"NaN";
}
return value;
});
And on the other side you can use reviver
parameter of JSON.parse
.
JSON.parse(data, function(key, value) {
if (value === "Infinity") {
return Infinity;
} elseif (value === "-Infinity") {
return -Infinity;
} elseif (value === "NaN") {
return NaN;
}
return value;
});
Post a Comment for "Force Json.stringify() To Emit Nan / Infinity Or Js Json Lib That Does So"