【问题标题】:Need to show JSON data in single line, humanly readable需要单行显示 JSON 数据,可读性强
【发布时间】:2021-06-18 17:37:53
【问题描述】:

我使用this library 制作了一个简单的控制台式计分机器人,用于输出 CS:GO 现场比赛的日志(例如碎片、助攻、连接到服务器的玩家),我编写了这段代码来输出所有日志JSON 样式对象:

const HLTV = require('hltv').default
HLTV.connectToScorebot({

    id: 2349500,
    onLogUpdate: (data) => {

        console.log(data.log)
    }

})

而且控制台的输出是很多这样的日志,没错:

[
  {
    Kill: {
      killerName: 'kr1vda',
      killerNick: 'kr1vda',
      killerSide: 'TERRORIST',
      victimNick: 'nonick',
      victimName: 'nonick',
      victimSide: 'CT',
      weapon: 'ak47',
      headShot: true,
      eventId: 2151088609,
      victimX: -1728,
      victimY: -1182,
      killerX: -1861,
      killerY: -1165,
      killerId: -1,
      victimId: 10732
    }
  }
]

但我想要单行输出,例如“PlayerX 用 ak47 杀死了 PlayerY”,所以我做了这个:

const HLTV = require('hltv').default
HLTV.connectToScorebot({

    id: 2349500,
    onLogUpdate: (data, done) => {
        const event = Object.keys(data)[0]
        const eventData = data[event]

        if (event === 'Kill') {
            console.log(`${eventData.killerNick} killed ${eventData.victimNick} using ${eventData.weapon}`)
        }
    }
})

当发生 kill 时应该打印一个单行字符串,但输出不是空的,而是什么都没有显示。 我知道这并不难,但我不是专家,如果有人能帮我解决这个问题,我将不胜感激。谢谢

【问题讨论】:

  • 如果你使用console.log(data)而不是console.log(data.log),输出是什么?
  • { Kill: [Object] }, { Kill: [Object] }, { Kill: [Object] }, { Kill: [Object] }, { Kill: [Object] }, { Kill : [Object] }, { RoundStart: {} }, { RoundEnd: [Object] }, { BombDefused: [Object] }, { Kill: [Object] }, { Assist: [Object] }, { Kill: [Object] ] },
  • 发生在第一个代码中

标签: javascript node.js sockets


【解决方案1】:

您需要从 data.log 中获取事件

const HLTV = require('hltv').default
HLTV.connectToScorebot({

    id: 2349500,
    onLogUpdate: (data, done) => {
        const event = Object.keys(data.log[0])[0]
        const eventData = data.log[0][event]

        if (event === 'Kill') {
            console.log(`${eventData.killerNick} killed ${eventData.victimNick} using ${eventData.weapon}`)
        }
    }
})

【讨论】:

  • 感谢您的回答,但使用您的代码,我现在得到了该错误
  • 我已经更新了使用data.log的代码,再试一次
  • 请记住,这只会抓取第一个事件,您需要使用for循环来抓取所有事件w3schools.com/js/js_loop_for.asp
猜你喜欢
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 2015-03-23
  • 2017-03-27
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多