json数组中的新行将转换为逗号|的NodeJS

时间:2017-07-05 13:53:36

标签: json node.js post

我对nodejs相对较新,在解析Json post请求时遇到了问题。

以下是帖子请求的JSON格式:

{"parameters":{"issuerId":[96409],"source":["'XYZ'"]}}

这是我的代码来阅读它。

function getSearchData(req, res, next) {
  console.log("req is" + req.body);

  try {
JSON.parse(reqJSON);
    } catch (e) {
console.log(e);
 }

} 

这种解析工作正常,我能够解析它并做我的进一步逻辑。但是,如果我更改了post请求的格式(带有其他新行的相同请求),则无法解析,因为它会在请求中添加额外的逗号代替每个新行。

{  
  "parameters": {  
    "issuerId": [96409],
    "source":["'XYZ'"]
  }
}

这里是第二个请求代码的输出。

req is{,"parameters":{"id":[96409],,"source":["'XYZ'"]}} [SyntaxError: Unexpected token ,]

如果您注意到,每个新行都会添加一个额外的逗号,这在开始的请求中从未出现过。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

除非您自己连接请求正文流,否则您永远不必自己解析JSON。

提示1:你使用像Express这样的框架吗?你使用身体解析器吗?

提示2:如何创建JSON?

提示3:您使用的是正确的内容类型吗?

提示4:如何从请求流中创建req.body

您没有包含整个代码,因此无法为您提供具体的解决方案。

  

我在这里做错了什么?

无论你在这里做错什么,它都没有包含在问题中。

  

但是,如果我更改我的帖子请求格式(带有其他新行的相同请求)

如果您包含有关如何执行此操作的更多详细信息,那将非常有用。

我看到了这个问题的两个潜在来源:

  1. 在客户端上引入逗号
  2. 或者在服务器端请求阅读期间引入它们
  3. 您没有向我们展示这两个部分中的任何一个 - 您没有显示序列化代码和发送数据的代码,并且您没有包含获取数据的代码,可能是从块和解析JSON。但问题可能出在其中一个部分。

    更新

    以下是如何使用Express执行所需操作的示例。您没有回答是否使用任何类似Express的框架,但我认为如果没有它就无法完成那个简单的任务,那么这是一个有效的例子:

    const express = require('express');
    const bodyParser = require('body-parser');
    
    const app = express();
    
    function getSearchData(req, res, next) {
      console.log('req body is', req.body);
      console.log('req body JSON is', JSON.stringify(req.body));
    
      res.json({ ok: true });
    }
    
    app.use(bodyParser.json());
    app.use(getSearchData);
    
    app.listen(3335, () => console.log('Listening on http://localhost:3335/'));
    

    它展示了如何正确地将已解析的JSON请求体作为对象req.body获取,如何将数据打印为标准的console.log表示并再次序列化为JSON。了解它的工作原理并与您自己的解决方案进行比较。这就是我所能做的,因为没有看到你的整个解决方案,我不能告诉你更多我已经给出的提示。