【问题标题】:Receive nested JSON object with Node.js使用 Node.js 接收嵌套的 JSON 对象
【发布时间】:2014-10-12 20:22:43
【问题描述】:

我无法将嵌套的 JSON 对象发布到我的 node.js 服务器。

这是对象的外观:

{
    "name" : "Plan 1", 
    "schedule": [
        {
            "start": 0, 
            "days": [
                {
                    "title" : "Day1"
                }
            ]
        }
    ]
}

这是我的 server.js 代码

router.route('/plans')
    .post(function(req, res) {

        console.log(JSON.stringify(req.body));

        var plan = new Plan();  
        plan.name = req.body.name;
        plan.tagline = req.body.tagline;
        plan.duration = req.body.duration;
        plan.schedule = req.body.schedule;

        plan.save(function(err) {
            if (err)
                res.send(err);
            res.send(plan);
        });
})

还有一些用于发出请求的 python 代码。 (我尝试过使用 Postman 和 curl 并得到相同的结果)

import requests
payload = {"name" : "Plan 1", "schedule": [{"start": 0, "days": [{"title" : "Day1"}]}]}
r = requests.post("http://localhost:5000/plans", data=payload)
print(r.text)

这是 server.js 为JSON.stringify(req.body) 输出的内容

{"name" : "Plan 1", "schedule" : ["start", "days"]}

然后实际上什么都没有保存,所以print(r.text) 输出:

{}

这样做的正确方法是什么?如果相关,我正在使用 MongoDB 进行存储,但看起来我的 server.js 甚至没有正确接收完整的 JSON。

【问题讨论】:

  • 欢迎来到 Stack Overflow!我不熟悉python,但根据我的经验:检查您的请求的内容类型标头是否设置为JSON,如果它仍然不起作用,请尝试在发送之前对您的有效负载进行字符串化并在服务器上对其进行解析。对于 save() 函数,请给我们看一些代码:)
  • 另外,如果您使用 Express,您可能需要添加 bodyparser 中间件

标签: javascript json node.js mongodb


【解决方案1】:

来自 Python 请求文档:http://docs.python-requests.org/en/latest/user/quickstart/#custom-headers

>>> import json
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> headers = {'content-type': 'application/json'}

>>> r = requests.post(url, data=json.dumps(payload), headers=headers)

这对我有用。谢谢

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多