JSON.stringify会增加字符串的长度吗?

时间:2014-09-12 09:14:39

标签: javascript json

我面临着一个特殊的问题。对于我的REST API,我需要验证手机号码是10位数。但是当我执行JSON.stringify时,它显示长度为12。

var num = req.body.phone;
    console.log(num);
console.log((JSON.stringify(num)).length);
    console.log((JSON.stringify(num)).length==10);

输出:

1111111111
12
10

2 个答案:

答案 0 :(得分:3)

请勿使用JSON.stringify将数字转换为字符串。只需添加一个空字符串:

var num = 1234,
    str = num + '';
console.log(str, str.length); // "1234", 4

或者,如果您愿意,请使用.toString()

var num = 1234,
    str = num.toString();
console.log(str, str.length); // "1234", 4

或者:

var str = String(1234);
console.log(str, str.length); // "1234", 4

回答标题中的问题:
JSON.stringify 在号码上调用时添加任何特殊字符。它只是将数字转换为字符串:

var str = JSON.stringify(1234);
console.log(str, str.length); // "1234", 4

您输入中可能还有一些额外的字符,而您却缺少这些字符。或者,您很可能已经<{1}} 输入已经一个字符串。在这种情况下,它会添加一组额外的引号:

stringify

答案 1 :(得分:0)

你真正做的是将字符串加强化。 在您的表单中,inputfield包含值作为字符串,而不是整数。 因此,如果您的手机价值类似于"123"而非123

JSON.stringify现在正在做的是将“123”打包到字符串""中。结果就是:""123""