Search code examples
javascriptjsoninfinitystringify

JSON.stringify converting Infinity to null


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.


Solution

  • Like the other answers stated, Infinity is not part of the values JSON can store as value.

    You can reverse the censor method on parsing the JSON:

    var c = JSON.parse(b, function (key, value) {
        return value === "Infinity" ? Infinity : value;
    });