如何在节点 js 中解析 PokeAPI [Object] 和 [Array]

Posted

技术标签:

【中文标题】如何在节点 js 中解析 PokeAPI [Object] 和 [Array]【英文标题】:How to parse PokeAPI's [Obect] and [Array] in nodejs 【发布时间】:2020-08-21 11:57:07 【问题描述】:

这是我在 *** 上的第一篇文章。 我目前正在处理discord bot. 我现在正在尝试添加命令以查看口袋妖怪统计信息。

到目前为止,我已经能够获得口袋妖怪的名称、ID 和重量。这很好,但我觉得可以从 API 中获取更多数据。

这是我当前的代码:

const Discord = require('discord.js');
const  RichEmbed  = require('discord.js');
const fetch = require('node-fetch');
const Command = require('../../../base/Command.js');

class pokemonLookup extends Command 
    constructor(client) 
    super(client, 
        name: 'pokesearch',
        description: 'Look up a pokemon!',
        aliases: ['ps'],
        guildOnly: false,
        ownerOnly: false,
        category: 'Pokemon',
        extended: 'Search some information about any pokemon. (Correct spelling is required.'
    )
    

    async run(message, args) 

    let pokemon = args[0];

    fetch(`https://pokeapi.co/api/v2/pokemon/$pokemon`)
        .then(res => res.json())
        .then(data => 
        const name = data.species.name;
        const url = data.species.url;
        const weight = data.weight / 10;
        const em = new RichEmbed();
        em.setTitle('Pokemon Stats');
        em.setDescription(`Name: [$name.toUpperCase()]($url)`);
        em.addField('Pokedox Number', data.id);
        em.addField('Weight (kg)', weight);
        em.setThumbnail(data.sprites.front_default);

        message.channel.send(em)
        )
    

module.exports = pokemonLookup

如果我将(data) 打印到控制台,我会得到:

moves: 
   [  move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] ,
      move: [Object], version_group_details: [Array] 
]

因为在他们的website 上,他们清楚地列出了moveversion_group_details,我想知道如何去检索这些信息。

【问题讨论】:

【参考方案1】:

您可以通过以下方式轻松记录此信息:

console.log(data.moves[0].move)
console.log(data.moves[0].version_group_details)

它将返回类似以下内容的内容:

>> ...... // move
>> [......] // version_group_details

【讨论】:

以上是关于如何在节点 js 中解析 PokeAPI [Object] 和 [Array]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pokeAPI 中获取有关 pokemon 的详细信息

如何使用节点 js 控制台拒绝邮递员中的解析消息

如何在节点 js 中执行此异步功能

如何删除jQuery对象中元素

Js如何实现对json克隆

如何在节点 js 中等待子查询结果?