在 Koa 中返回 JSON

use*_*406 5 node.js koa

我在路由器中通过 POST 方法接收 JSON,然后将其返回给用户。由于某种原因,返回的 JSON 会将所有数字和布尔值转换为字符串。如果相关的话,我正在使用 koa-bodyparser 。

有什么办法可以避免这种情况吗?

代码:

var js = ctx.request.body.json;
ctx.body = {
                status: 'success',
                json: js
};
Run Code Online (Sandbox Code Playgroud)

输入 JSON:

{
"json": {
       "numbers": 123
        }
}
Run Code Online (Sandbox Code Playgroud)

输出 JSON:

{
"json": {
       "numbers": "123"
        }
}
Run Code Online (Sandbox Code Playgroud)

小智 3

严格模式默认已处于活动状态(https://github.com/cojs/co-body#options),因此您无需担心它。这段代码对我有用:

  ctx.body = {
    status: 'success',
    json: ctx.request.body.json
  };
Run Code Online (Sandbox Code Playgroud)

我使用Postman将其发送到koa服务器并在Postman中收到答案:

  {
    "status": "success",
    "json": {
        "id": 1,
        "name": "Joe"
    }
  }
Run Code Online (Sandbox Code Playgroud)

如您所见,“id”是一个数字。由于您没有写有关您的客户端的信息,我认为它可能是浏览器?如果是这样,请尝试使用 JSON.parse() 函数,因为您可能会从后请求中获取字符串。看这个例子:

JSON.parse("{\"json\":{\"id\":1}}");
Run Code Online (Sandbox Code Playgroud)

您还可以尝试将 Postman 作为客户端,看看是否有效(https://www.getpostman.com/)。