javascript - parseFloat() 对于 JSON 输入返回 NAN

标签 javascript node.js parsefloat

我有以下 JSON 请求。我正在使用 bodyParser.json() 和express。我需要将这个请求数据用到/get的逻辑中。

{
    "type": "A",
    "longitude": "23",
    "latitude": "40"
}

我正在尝试解析nodejs中的经度和纬度。下面是我的一段代码

app.use(bodyParser.json());
app.get('/api/second', function(request, response) {
    var locationType = request.body.type;
    var longitude = parseFloat(request.body.longitude);
    var latitude =  parseFloat(request.body.latitude);

当我执行控制台日志时,它向我显示 NAN,如果无法解析输入,则应该出现 NAN,但这里它们是数字。我在其他一些代码中尝试过 parseInt ,它对我来说效果很好。 我还尝试向这样的两个变量添加 10,但由于经度本身不起作用,我无法进一步进行。

    var longHigh = longitude+parseFloat('10');

最佳答案

当我尝试它时它工作正常,所以我只能猜测您在 request.body 中缺少适当的值。检查 request.body.longituderequest.body.latitude 的值是否是您的预期值。

使用app.post(...)而不是app.get(...)。 示例如下:

index.js

const app = require("express")();
const morgan = require("morgan");
const bodyParser = require("body-parser");

app.use(morgan("dev"));
app.use(bodyParser.json());
// app.use(bodyParser.urlencoded({ extended: true })); // if using urlencoded format
app.post("/api/second", (req, res) => {
  return res.send({
    longitude: parseFloat(req.body.longitude),
    latitude: parseFloat(req.body.latitude),
  });
});

app.listen(3000, () => console.log("Listening on :3000"));

请求内容类型:application/json

{
    "longitude": "30.2",
    "latitude": "21.4"
}

我得到的回应

{
    "longitude": 30.2,
    "latitude": 21.4
}

关于javascript - parseFloat() 对于 JSON 输入返回 NAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58109686/

相关文章:

Javascript parseFloat '1.23e-7' 在需要 0.000000123 时给出 1.23e-7

javascript - 更改按钮并在悬停时添加表单

php - 多个 if() 合而为一

javascript - Jquery 循环数组 - 一定有更好的方法

node.js - WSL : mocha from sudo apt install mocha crashes with fresh install

android - 在android上解析socket.io数据。 (Gottox Socket.IO)

javascript - JavaScript 中的 ParseFloat 函数

javascript - AJAX 未在 Laravel 中调用 Controller 方法

node.js - 获取代表现在(当前时间)的时间戳用于查询mongodb oplog

javascript - 使用此方法将字符串转换为整数是否有任何副作用