【问题标题】:Parsing a JSON Stringified variable returns the value undefined?解析 JSON 字符串化变量返回值未定义?
【发布时间】:2020-12-27 00:41:24
【问题描述】:

下面的代码是我的 discord.js message event 的全部内容,我正在使用 discord.js 以及 node-wit。当 wit 识别出包含数学表达式的消息时,它会计算该值并将其发送回给用户。

它使用JSON.stringify() 发回数据。但是,当我尝试解析它时,我记录的所有内容都只返回 undefined.

client.on('message', (message) => {
 wClient
  .message(message.content, {})
  .then((data) => {
   const response = JSON.stringify(data, ['intents', 'name', 'confidence']);
   const responseParsed = JSON.parse(response);

   console.log(response);
   console.log(responseParsed);

   if (responseParsed.name == 'Math') {
    message.channel.send(eval(data));
   }
  })
  .catch(console.error);
});

JSON.stringify()JSON.parse() 的控制台日志的实际响应如下:

JSON.Stringify()

{"intents":[{"name":"Math","confidence":0.9945}]}

JSON.parse()

{ intents: [ { name: 'Math', confidence: 0.9945 } ] }

【问题讨论】:

  • responseParsed 没有name 属性...(以及为什么要使用eval?)
  • 我之前尝试过,它返回undefined。我将其改回不使用该属性,以便我可以显示它作为一个整体返回的内容。
  • wClient 是什么。
  • 我使用了 eval ,因为 Wit 返回的消息带有相信的意图,它实际上并没有挑选出它检测到的数学表达式, eval 是我能找到的唯一方法来获取一个字符串和将其用作数学表达式。
  • @DanielA.White 我将 wClient 声明为 const wClient = new Wit({accessToken: TOKEN})

标签: javascript node.js json discord.js wit-ai


【解决方案1】:

基于这种结构

 { intents: [ { name: 'Math', confidence: 0.9945 } ] }

我认为应该是这样的 尝试

 if (responseParsed.intents[0].name == 'Math') {
message.channel.send(eval(data));

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2020-11-29
    • 2016-08-15
    • 2011-11-24
    • 2021-10-15
    相关资源
    最近更新 更多