Javascript JSON.stringify将无穷大转换为null
我要说:Javascript JSON.stringify将无穷大转换为null,javascript,json,infinity,stringify,Javascript,Json,Infinity,Stringify,我要说: var a = {b: Infinity, c: 10}; 当我这样做的时候 var b = JSON.stringify(a); 它返回以下内容 b=“{”b:null,“c:10}” JSON.stringify如何将对象转换为字符串 我试过了 但是在这种情况下,我必须返回字符串“Infinity”,而不是Infinity。如果我返回无穷大,它会再次将无穷大转换为null 如何解决此问题。JSON没有无穷大或NaN,请参见以下问题: 因此,{b:Infinity,c:10}不
var a = {b: Infinity, c: 10};
当我这样做的时候
var b = JSON.stringify(a);
它返回以下内容
b=“{”b:null,“c:10}”
JSON.stringify如何将对象转换为字符串
我试过了
但是在这种情况下,我必须返回字符串“Infinity”,而不是Infinity
。如果我返回无穷大,它会再次将无穷大转换为null
如何解决此问题。JSON没有无穷大或NaN,请参见以下问题: 因此,
{b:Infinity,c:10}
不是有效的JSON。如果您需要在JSON中编码无穷大,您可能必须求助于对象:
{
"b": { "is_infinity": true, "value": null },
"c": { "is_infinity": false, "value": 10 }
}
这个结构是由,假设你上面的例子按照你说的做
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);
JSON不支持无穷大/Nan 请参考以下链接 谢谢
Siva与前面提到的其他答案一样,
infinity
不是JSON可以存储为值的值的一部分
您可以在解析JSON时反转审查方法:
var c = JSON.parse(
b,
function (key, value) {
return value === "Infinity" ? Infinity : value;
}
);
我总是可以这样做的,但最好是得到无穷大而不是“无穷大”,因为我不需要对数百个具有数百个属性的对象执行此附加检查。正如我在回答中所写的,包含
无穷大
(不带引号)作为值的JSON文件将不是有效的JSON。您不应该编写不符合标准的JSON文件。@DigvijayYadav,我担心您将不得不接受野兽的本性。也许在某些使用情况下,可以使用另一个低或高的数字:number.MIN\u SAFE\u INTEGER
或number.MAX\u SAFE\u INTEGER
var c = JSON.parse(
b,
function (key, value) {
return value === "Infinity" ? Infinity : value;
}
);