我正在编写一个节点js程序,它执行以下操作。
目前,我能够非常顺利地完成上述三件事。但我的问题出现在这里。我试图将值从json转换为int
。以下是我的样本数据。
{
"Items": [
{
"accountId": "12345",
"pin": "1234",
"userId": "user1",
"dueDate": "5/20/2017",
"_id": "2",
"dueAmount": "4000",
"totalBalance": "10000"
}
],
"Count": 1,
"ScannedCount": 4
}
从上面的json我需要int格式的dueAmount
所以我尝试了下面的代码。
var userDueDate = JSON.stringify(res.Items[0].dueDate);
var userDueAmount = JSON.stringify(res.Items[0].dueAmount);
var userTotalBalance = JSON.stringify(res.Items[0].totalBalance);
var intUsingNumber = Number(userDueAmount);
var intUsingParseInt = parseInt(userDueAmount);
console.log('by using Number : ' + intUsingNumber + ' and the type is :' + (typeof intUsingNumber));
console.log('by using Parse : ' + intUsingParseInt + ' and the type is :' + (typeof intUsingParseInt));
当我运行这个程序时,我得到输出为
by using Number : NaN and the type is :number
by using Parse : NaN and the type is :number
我需要在哪里打印4000
而不是NaN
。
此外,我感到困惑的是,type
将其显示为number
,但该值为NaN
。
请让我知道我哪里出错了,我该怎么办呢。
由于
答案 0 :(得分:3)
JSON是一个包装为字符串的JS对象:
let json = "{"dueAmount":"4000"}"
- 是一个JSON对象,
let jsObj = {"dueAmount":"4000"}
不是。
如果收到JSON对象,则需要通过
将其转换为JS对象let result = JSON.parse(json)
然后
parseInt(result.dueAmount)
答案 1 :(得分:0)
尝试以下代码(不需要使用JSON.stringify)
var userDueDate =res.Items[0].dueDate;
var userDueAmount = res.Items[0].dueAmount;
var userTotalBalance = res.Items[0].totalBalance;
var intUsingParseInt = parseInt(userDueAmount);
console.log('by using Parse : ' + intUsingParseInt + ' and the type is :' + (typeof intUsingParseInt));
答案 2 :(得分:0)
假设 res 是JSON对象。您只需使用parseInt函数即可获得数字格式。
function incrementValue()
{
var value = parseInt(document.getElementById('number').value, 10);
value = isNaN(value) ? 0 : value;
value++;
document.getElementById('number').value = value;
}
你不应该在这里使用JSON.stringify。导致它将JSON对象转换为String。