我想做的就是创建一个像这样的JSON字符串:
'{ "a" : 1.00 }'
我试过了
var n = 1.00;
var x = { a : n };
console.log(JSON.stringify(x)); // Gives {"a":1}
var n = 1.00;
var x = { a : n.toFixed(2) };
console.log(JSON.stringify(x)); // Gives {"a":"1.00"}
var x = { x : 1.00 };
x = JSON.stringify(x , function(key,val ){
if( typeof val === "number")
return val.toFixed(2);
return val;
});
console.log(x); // Gives {"x":"1.00"}
甚至可以代表' {" a" :1.00}'作为javascript中的JSON字符串? 如果是,我该怎么做?
答案 0 :(得分:8)
JSON中的数字没有任何特定的精度。数字表示为重现它所需的最短符号。
值1.00
与值1
相同,因此它以JSON的形式表示。
如果您特别希望以1.00
格式表示数字,那么您无法将其存储为数字,则需要使用字符串。
字符串'{"x":1.00}'
是有效的JSON,但它与'{"x":1}'
具有相同的含义。
答案 1 :(得分:0)
toFixed()返回一个字符串,因此总是会产生“1.00”而不是1.00。
我能想到以1.00作为值来获取JSON字符串的唯一方法是像上面的toFixed()一样创建它,然后通过从“1.00”中删除引号字符来修改字符串。 / p>
您也可以在没有toFixed()的情况下创建它,然后进入并添加.00个字符。
无论哪种方式,它都让我感到更省力,但它应该是可能的。我想不出直接做的方法。
答案 2 :(得分:0)
您要实现的目标超出了序列化对象概念的范围。序列化是以最一般的方式呈现数据,因此该序列化对象的发送者和接收者都能够以任何编程语言理解。您尝试表示的此数据类型的定义称为' Number'在JSON中。您应该将其解析或转换为您需要的类型(这是反序列化概念的一部分,通常由JSON解析方法完成)。