JSON.stringify converting Infinity to null

me_digvijay picture me_digvijay · May 20, 2013 · Viewed 8k times · Source

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.

Answer

KooiInc picture KooiInc · May 20, 2013

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:

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