【问题标题】:Convert yaml to JSON returns ["object Object"]将 yaml 转换为 JSON 返回 ["object Object"]
【发布时间】:2020-08-18 18:10:03
【问题描述】:

我正在构建一个将 YAML 转换为 JSON 的后端服务。但是,它返回 ["object Object"]。

邮递员发文请求:name: wf1

代码: 从 'js-yaml' 导入 { safeLoad }

app.post('/,
    function (req, res) {
        res.send(JSON.stringify(safeLoad(req.body)))
}
)

返回["object Object"]

我希望它返回 name: wf1 的 JSON 格式。

【问题讨论】:

  • 你能显示safeLoad函数吗?
  • @TsvetanGanev 是的,来自js-yaml
  • @NicolaeMaties 我已经阅读了那个答案,但它没有回答我的问题,因为我得到了错误的结果,而不是我不知道如何得到结果。
  • 所以您在请求正文中发送 YAML?我不确定 Express body-parser 是否可以默认解析它。你能检查一下req.body 的值是多少吗?

标签: node.js json yaml


【解决方案1】:

如果您打算在请求中发送文本(即 Content-Type: text/plain),则需要确保正文实际上被解析为原始文本。使用来自body-parsertext-function 应该可以解决这个问题:

app.use(bodyParser.text())
app.post('/', (req, res) => {
    res.send(JSON.stringify(safeLoad(req.body)));
})

请注意,如果您打算将实际的 json 发送回客户端,则需要将其更改为:

app.post('/', (req, res) => {
    res.json(safeLoad(req.body));
})

【讨论】:

    【解决方案2】:

    首先,根据js-yamlsafeLoad 函数只接受字符串作为输入类型,而req.body 应该作为对象返回。也许指向特定的键可以为您工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 2019-05-08
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      相关资源
      最近更新 更多