I have JavaScript Object say:
var a = {b: Infinity, c: 10};
When I do
var b = JSON.stringify(a);
it returns the following
b = "{"b":null, "c":10}";
How is the JSON.stringify converts the object to strings?
I tried MDN Solution.
function censor(key, value) {
if (value == Infinity) {
return "Infinity";
}
return value;
}
var b = JSON.stringify(a, censor);
But in this case I have to return the string "Infinity" not Infinity
. If I return Infinity it again converts Infinity to null.
How do I solve this problem.
JSON doesn't have Infinity or NaN, see this question:
JSON left out Infinity and NaN; JSON status in ECMAScript?
Hence
{ b: Infinity, c: 10 }
isn't valid JSON. If you need to encode infinity in JSON, you probably have to resort to objects:This structure is generated by, given your above example does what you say it does,
Like the other answers stated,
Infintity
is not part of the values JSON can store as value.You can reverse the censor method on parsing the JSON:
JSON doesn't support infinity/Nan.
Please refer the below links.
http://www.markhansen.co.nz/inspecting-with-json-stringify/
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify
JSON left out Infinity and NaN; JSON status in ECMAScript?
Thanks,
Siva