JSON.stringify converting Infinity to null

走远了吗. 提交于 2019-11-27 09:04:10

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;
          }
        );
JohnB

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:

{
    "b": { "is_infinity": true, "value": null },
    "c": { "is_infinity": false, "value": 10 }
}

This structure is generated by, given your above example does what you say it does,

function censor(key, value) {
  if (value == Infinity) {
    return JSON.stringify ( { is_infinity: true, value: null } );
  } else {
    return JSON.stringify ( { is_infinity: false, value: value } );
  }
}
var b = JSON.stringify(a, censor);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!