混淆int转换
我正在写一个节点js程序,执行下面的操作。
- 得到JSON。
- parsing它。
- 打印到控制台。
目前我能够非常顺利地完成以上三件事情。 但是我的问题出现在这里。 我试图从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
。
请让我知道我哪里错了,我该如何解决它。
谢谢
JSON是一个包装成string的JS对象:
let json = "{"dueAmount":"4000"}"
– 是一个JSON对象,
let jsObj = {"dueAmount":"4000"}
不是。
如果您收到一个JSON对象,则需要将其转换为JS对象
let result = JSON.parse(json)
接着
parseInt(result.dueAmount)
尝试下面的代码 (不需要使用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));
假设res是一个JSON对象。 你可以简单地使用parseInt函数来获取数字格式。
var am = parseInt(res.Items[0].dueAmount)
你不应该在这里使用JSON.stringify。 因为它将JSON对象转换为一个string。