对int转换感到困惑

时间:2017-05-15 08:37:48

标签: json node.js parseint

我正在编写一个节点js程序,它执行以下操作。

  1. 得到json。
  2. 解析它。
  3. 打印到控制台。
  4. 目前,我能够非常顺利地完成上述三件事。但我的问题出现在这里。我试图将值从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

    请让我知道我哪里出错了,我该怎么办呢。

    由于

3 个答案:

答案 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。