【问题标题】:Sending json by curl to node.js that will read it通过 curl 将 json 发送到将读取它的 node.js
【发布时间】:2014-02-28 12:12:16
【问题描述】:

你能帮我解决这个问题吗?

我正在发送请求类型:post,到 node.js 服务器:

curl -i -X POST -H 'Content-Type: application/json' -d "{'name':'somename','year':'2009'}" http://localhost:3000/achivements

在后端服务器中,我正在通过快递阅读它:

exports.addAchivement = function(req, res) {
   var achivements = req.body;  
   console.log(achivements);
   res.send(achivements);
   (...)

现在我想创建带有成就的 JSON 对象。所以我可以访问诸如 achievements.name 之类的变量; 问题是我做不到。 成就 = JSON.parse(成就)不工作 并且 console.log(achievements) 正在抛出 //"{'name':'someone','year':'2009'}": ""

我怎样才能用它制作 JSON 对象,以便最近使用它?

问候,非常感谢您的帮助:)

【问题讨论】:

    标签: json node.js curl


    【解决方案1】:

    不是 JSON,而是 JSON5。虽然它具有相似的语法,但您的标准 JSON 解析器不会接受它。

    要发送经典的 json,您需要在请求中交换单引号和双引号:

    curl -i -X POST -H 'Content-Type: application/json' -d '{"name":"somename","year":"2009"}' http://localhost:3000/achivements
    

    【讨论】:

    • 我用过。 JSON.parser 仍然抛出错误,console.log(achivements), throws: { '\'{name:somename,year:2009}\'': '' } now
    • 我猜你没有将外部双引号更改为单引号。我建议按原样复制粘贴我的字符串。
    • 我确实复制并粘贴了您的字符串。 :) 嗯,mby 的问题是 node.js 添加了 \ 的东西。当我打印到控制台 req.body 时,它显示 { '\'{name:somename,year:2009}\'': '' },可能 JSON.parser 不理解该变量。
    • 好吧,你可以尝试转义引号:curl -i -X POST -H 'Content-Type: application/json' -d "{\"name\":\"somename\",\"year\":\"2009\"}" http://localhost:3000/achivements
    • 看起来好多了,{ '{"name":"somename","year":"2009"}': '' },但解析器仍然不喜欢它。可能是因为这个:''在最后:)
    【解决方案2】:

    只需在命令中为您的键/值对添加 \":

    curl -i -X POST -H 'Content-Type: application/json' -d "{'\"name'\":'\"somename'\",'\"year'\":'\"2009'\"}" http://localhost:3000/achivements
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-06
      • 2019-07-23
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多