JSON.stringify和数字为字符串

时间:2016-03-06 13:55:52

标签: javascript json

是否有一种简单的方法来处理这个示例情况

var data = {
     "phone":  input
}
var payload = JSON.stringify(data);

在API调用中使用有效负载且API要求电话值为字符串的情况下,电话号码只能输入数字或字符串,例如123777777或1237-77777等

我尝试添加引号,但JSON.stringify对它们进行了转义,因此最终成为最终数据的一部分。

' hack'我找到的解决方案是添加一个尾随空格,即

var data = {
     "phone":  input + " "
}

但是想知道是否有一种简单而巧妙的方法来处理这种情况?

4 个答案:

答案 0 :(得分:4)

字符串不必包含任何内容,因此可以执行:

var data = {
    "phone": input + ""
};

"" + input也可以。但在这种情况下,我通常使用String函数:

var data = {
    "phone": String(input)
};

注意:不是new String(...),只有String(...)

其他人提出的input.toString()选项也没有错,只要您知道input不是nullundefined。 (如果是nullundefined,则会导致错误。)

答案 1 :(得分:2)

如果你想确保它是一个字符串调用toString(),它确保将数字解析为字符串。

var data = {
  "phone":  input.toString()
}

最好的是,即使你有一个字符串,这也不会引发错误。它总是一个字符串。有关详细信息,请参阅此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString

答案 2 :(得分:1)

始终可以使用toString()。即使它是一个字符串

,这也会起作用
var data = {
     "phone":  input.toString()
}

答案 3 :(得分:0)

$( document ).ready(function(){
var input=1234567890;
var data = {
     "phone":  input.toString()
}
console.log("inputType---->"+$.type(input));
var payload = JSON.stringify(data);
console.log("payload----afterstringify--->"+payload);
console.log("dataType------->"+$.type(data.phone));
console.log("payloadType-------->"+$.type(payload));

});