在Javascript中,如何将1.00表示为JSON对象中的数字?

时间:2015-03-28 19:50:31

标签: javascript json

我想做的就是创建一个像这样的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字符串? 如果是,我该怎么做?

3 个答案:

答案 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解析方法完成)。