首页 > 解决方案 > 在 Koa 中返回 JSON

问题描述

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

有没有办法避免这种情况?

代码:

var js = ctx.request.body.json;
ctx.body = {
                status: 'success',
                json: js
};

输入 JSON:

{
"json": {
       "numbers": 123
        }
}

输出 JSON:

{
"json": {
       "numbers": "123"
        }
}

标签: node.jskoa

解决方案


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

  ctx.body = {
    status: 'success',
    json: ctx.request.body.json
  };

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

  {
    "status": "success",
    "json": {
        "id": 1,
        "name": "Joe"
    }
  }

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

JSON.parse("{\"json\":{\"id\":1}}");

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


推荐阅读