Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用膝关节炎检索体的字符串和JSON 我使用膝关节炎,假设客户端发送这样的身体: { "first": "1" , "second": "2"}_Node.js_Middleware_Koa_Body Parser - Fatal编程技术网

Node.js 使用膝关节炎检索体的字符串和JSON 我使用膝关节炎,假设客户端发送这样的身体: { "first": "1" , "second": "2"}

Node.js 使用膝关节炎检索体的字符串和JSON 我使用膝关节炎,假设客户端发送这样的身体: { "first": "1" , "second": "2"},node.js,middleware,koa,body-parser,Node.js,Middleware,Koa,Body Parser,我想要的是作为字符串的原始主体,不做任何更改(JSON.stringify更改字段的顺序并删除空格,然后我就不能使用它)。我试着使用它来获得body的字符串,所以我必须将它解析为JSON var getRawBody = require('raw-body') app.use(function* (next) { var string = yield getRawBody(this.req, { length: this.length, limit: '1mb', e

我想要的是作为字符串的原始主体,不做任何更改(JSON.stringify更改字段的顺序并删除空格,然后我就不能使用它)。我试着使用它来获得body的字符串,所以我必须将它解析为JSON

var getRawBody = require('raw-body')
app.use(function* (next) {
  var string = yield getRawBody(this.req, {
    length: this.length,
    limit: '1mb',
    encoding: this.charset
  })
  var json = JSON.parse(string)
  // do something with "string"
  // do something with "json"
})

是否有中间件将body作为json和原始字符串提供给我?

如果您同时需要原始字符串和json,请获取字符串,保留一个副本,然后将其解析为json

var getRawBody = require('raw-body')
app.use(function* (next) {
  var string = yield getRawBody(this.req, {
    length: this.length,
    limit: '1mb',
    encoding: this.charset
  })
  var json = JSON.parse(string)
  // do something with "string"
  // do something with "json"
})

注意:您必须针对
this.req
运行
getRawBody()
,因为这是节点的原始http
请求
对象
this.request
是特定于koa的,不会起作用。

是的,我知道这一点(在问题中写道),我正在寻找一种不将字符串解析为json或将json转换为字符串的方法。谢谢你的回复。你所要求的并不是一个典型的用例,而且它的内存占用是原来的两倍,而且只需要一行额外的代码。因此,不太可能存在预先打包的解决方案。手动操作(如上所示)几乎是您唯一的选择。即使有一个预打包的解决方案,它也会在幕后做同样的事情(将字符串解析为JSON)。