【问题标题】:express post receive json isn`t I send快递接收json不是我发送的吗
【发布时间】:2016-07-16 10:59:25
【问题描述】:

我使用 request 将 json 数据发送到我的 express 服务器。

但是快递接收的数据不是我的json。

我将展示我关于这个问题的代码。

我发送的json

    {
            'commodityList': [
                {
                    'commodityName': 'aaa',
                    'commodityId': '2',
                    'commodityPrice': 128,
                    'commodityNumber': 2
                },
                {
                    'commodityName': '',
                    'commodityId': '1',
                    'commodityPrice': 59,
                    'commodityNumber': 10
                }
            ],
            'purchasePrice': 846,
            'userId': '1'
 }

我收到的 json

{ 'commodityList[0][commodityName]': 'aaa',
  'commodityList[0][commodityId]': '2',
  'commodityList[0][commodityPrice]': '128',
  'commodityList[0][commodityNumber]': '2',
  'commodityList[1][commodityName]': 'bbb',
  'commodityList[1][commodityId]': '1',
  'commodityList[1][commodityPrice]': '59',
  'commodityList[1][commodityNumber]': '10',
  purchasePrice: '846',
  userId: '1' }

代码

请求

var request = require('request');

var options = {
    url: 'http://localhost:3000/commodityManage/purchaseAdd',
    headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    },
    form: {
        'commodityList': [
            {
                'commodityName': 'aaa',
                'commodityId': '2',
                'commodityPrice': 128,
                'commodityNumber': 2
            },
            {
                'commodityName': 'bbb',
                'commodityId': '1',
                'commodityPrice': 59,
                'commodityNumber': 10
            }
        ],
        'purchasePrice': 846,
        'userId': '1'
    }
};

console.log(options.form.commodityList);

console.log(options.form.commodityList.length);

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        var info = JSON.parse(body);
        console.log("info:", info);
    }
}

request.post(options, callback);

快递

router.post('/purchaseAdd', function(req, res, next) {
    var uploadData = req.body;
    console.log(uploadData);
}

我不知道如何发布我想要的 json。

请帮帮我。 (´・_・`)

我的 express 版本是 v4

我的节点版本是v4.2.4

【问题讨论】:

  • 我用bodyParser可以解决。非常感谢~~

标签: javascript json node.js express request


【解决方案1】:

注意:

我发送的 json

JavaScript Object initializer 不是 JSON,尽管它们的语法相似。

JSON 是一种用于表示结构化数据的文本格式。然而,它不是代码。


如果你想发送一个写成 JSON 的 JavaScript 对象,你可以使用request's json option:

var options = {
    url: 'http://localhost:3000/commodityManage/purchaseAdd',
    headers: {
        // ...
    },
    json: { // <----
        'commodityList': [
            {
                'commodityName': 'aaa',
                'commodityId': '2',
                'commodityPrice': 128,
                'commodityNumber': 2
            },
            {
                'commodityName': 'bbb',
                'commodityId': '1',
                'commodityPrice': 59,
                'commodityNumber': 10
            }
        ],
        'purchasePrice': 846,
        'userId': '1'
    }
};

这会将对象中的数据写为:

{"commodityList":[{"commodityName":"aaa","commodityId":"2",...

通过改用form 选项,对象被序列化为URL-encoded,格式化为application/x-www-form-urlencoded

// key1=value&key2=value&...    
commodityList%5B0%5D%5BcommodityName%5D=aaa&commodityList%5B0%5D%5BcommodityId%5D=2&...

【讨论】:

    【解决方案2】:

    您接收的 json 是正在发送的 json。它只是以不同的格式显示。

    为了证明它尝试做这样的事情:

    router.post('/purchaseAdd', function(req, res, next) {
    
        //this will transform the object to a string so you can see all the keys/values
        var uploadData = JSON.stringify(req.body);
    
        console.log(uploadData);
    }
    

    【讨论】:

    • 对不起,这个方法行不通。但是我用bodyParser可以解决它。谢谢我的qusetion.lol
    【解决方案3】:

    我将 app.js 中的 bodyParser 设置为 true

    喜欢这个

    var bodyParser = require('body-parser');
    app.use(bodyParser.json({limit: 'lmb'}));
    app.use(bodyParser.urlencoded({ extended: true}));
    

    【讨论】:

      猜你喜欢
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      • 2018-10-06
      • 2014-07-10
      • 2017-12-10
      • 1970-01-01
      相关资源
      最近更新 更多