javascript - 通过 POST 接收 JSON 的 API 接收到的类型与发送的类型不同

标签 javascript node.js json express body-parser

我正在编写一个在 NODE.JS 中获取 JSON 的 API。发送数据的方法是POST。

为了简化请求管理,我使用 lib Express 和 BodyParser 来解释 POST 请求的主体。

我将信息分组到一个 javascript 对象中,如下所示:

const data = {
    "plan": "312409959F9FDDE444959F9C950201D7",
    "sender": {
        "name": $("[name=pname]").val(),
        "email": $("[name=pemail]").val(),
        "hash": credentials.hash,
        "phone": {
            "areaCode": $("[name=pphone]").val().substring(0, 2),
            "number": $("[name=pphone]").val().substring(2, 11)
        },
        "address": {
            "street": $("[name=paddress]").val(),
            "number": $("[name=pnumber]").val(),
            "complement": $("[name=pcomplement]").val(),
            "district": $("[name=pbairro]").val(),
            "city": $("[name=pcity]").val(),
            "state": $("[name=puf]").val(),
            "country": "BRA",
            "postalCode": $("[name=pcep]").val()
        },
        "documents": [{
            "type": "CPF",
            "value": $("[name=pcpf]").val()
        }]
    },
    "paymentMethod": {
        "type": "CREDITCARD",
        "creditCard": {
            "token": credentials.token,
            "holder": {
                "name": $("[name=pownername]").val(),
                "birthDate": $("[name=pbirthday]").val().split('-').reverse().join('/'),
                "documents": [{
                    "type": "CPF",
                    "value": $("[name=pcpf2]").val()
                }],
                "phone": {
                    "areaCode": $("[name=pphone2]").val().substring(0, 2),
                    "number": $("[name=pphone2]").val().substring(2, 11)
                }
            },
        }
    }

}

请求发送如下:

$.post('/adherence', data, function (msg) {
    console.log(msg)
})

我后端的收据是这样的:

app.post('/adherence', (req, res) => {
    try {
        console.log(req.body);
        res.send("OK");
    } catch (e) {
        console.log(e);
        res.send(e);
    }
});

但是我在 req.body 中得到的是这样的:

{ plan: '312409959F9FDDE444959F9C950201D7',
 'sender[name]': 'FRancisco',
  'sender[email]': 'falisson.sv@sandbox.pagseguro.com.br',
  'sender[hash]': 'ceedf0fd2ffd35f4054104d305088e19e8ca9333bbf70be10bd2ea6f94af226a',
  'sender[phone][areaCode]': '63',
  'sender[phone][number]': '991047876',
  'sender[address][street]': '1105 sul qi 3 al 3 lt 1',
  'sender[address][number]': '1',
  'sender[address][complement]': '',
  'sender[address][district]': 'centro',
  'sender[address][city]': 'palmas',
  'sender[address][state]': 'TO',
  'sender[address][country]': 'BRA',
  'sender[address][postalCode]': 'CEP',
  'sender[documents][0][type]': 'CPF',
  'sender[documents][0][value]': 'CPF',
  'paymentMethod[type]': 'CREDITCARD',
  'paymentMethod[creditCard][token]': 'b2f303ba63964404b6c466323deb9078',
  'paymentMethod[creditCard][holder][name]': 'LUCINEIA',
  'paymentMethod[creditCard][holder][birthDate]': '11/01/1990',
  'paymentMethod[creditCard][holder][documents][0][type]': 'CPF',
  'paymentMethod[creditCard][holder][documents][0][value]': 'CPF',
  'paymentMethod[creditCard][holder][phone][areaCode]': '63',
  'paymentMethod[creditCard][holder][phone][number]': '991047876' }

在我看来,一切正常,我收到的是发送格式的 JSON。我的代码有什么问题?

最佳答案

尝试像这样发送您的请求:

$.ajax({
    url: '/adherence',
    type: 'POST',
    data: JSON.stringify(data),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (msg) {
        console.log(msg)
    })
});

关于javascript - 通过 POST 接收 JSON 的 API 接收到的类型与发送的类型不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55978676/

相关文章:

sql - Postgres SQL 查询返回 JSON 对象,其中包含一列中的键和另一列中的值

javascript - 从 google maps API 的 v2 升级到 v3,建议

node.js - 如何在docker中启动vuejs ssr服务器

javascript - 需要一些有关 Highcharts JSON 格式的指示

javascript - 在 NodeJS 中发送 POST 请求时如何设置 Content-Length?

node.js - Node/Express 文件上传

java - 如何配置 Spring 使用 @RequestBody 注释将 JSON 反序列化为 BigDecimal

javascript - 如何将参数传递给 Javascript 中基于 eval 的函数

javascript - jquery 验证

JavaScript/jQuery : How to convert string to HTML character code