You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用axios-get-json-response时JSON解析编码错误求助

解决axios-get-json-response处理带乱码前缀JSON的编码问题

问题分析

你调用CoinGecko API返回的响应包含非JSON的控制字符前缀(\x03\x0E�)和后缀(\x03),导致getJson.parse无法正确解析。而Tronscan API返回标准纯JSON,所以能正常处理。核心问题是axios-get-json-response的默认配置和parse方法未处理这类带冗余字符的响应。

解决方案

1. 手动清理响应无效字符

解析前过滤JSON字符串前后的非有效字符,只保留{到}之间的核心内容。

2. 自定义axios响应处理

绕过getJson.axiosConfiguration的默认逻辑,直接获取原始响应文本,手动清理后再解析。

修改后的代码示例

针对!doge命令的调整如下:

client.on('messageCreate', async (message) => {
  if (message.content.startsWith('!doge')){
    const a = Math.random() * (5-0) + 1
    var b = parseInt(a);
    console.log(b)
    const { data: balanceData } = await axios.get(
      `https://dogechain.info/chain/Dogecoin/q/addressbalance/DQzs4yzLoR3UJ3YdCRSD7eEeW3kv5gdca2`
    );

    Promise.try(() => {
      // 不使用getJson默认配置,直接获取原始文本
      return axios.get("https://api.coingecko.com/api/v3/simple/price?ids=dogecoin&vs_currencies=usd", {
        responseType: 'text'
      }).then((response) => {
        console.log(response.data)
        // 提取有效JSON部分:匹配第一个{到最后一个}的内容
        const cleanJsonStr = response.data.match(/{[\s\S]*}/)[0];
        // 手动解析JSON
        const parsedData = JSON.parse(cleanJsonStr);
        // 修正取值逻辑:CoinGecko返回结构为{dogecoin: {usd: 价格}}
        const dataprice = parsedData.dogecoin.usd;

        const checkprice = balanceData * dataprice;

        message.reply(`Le solde du wallet dogecoin simcash est ${checkprice}usd`);

        if (b == 5) {
          message.reply(`N'hésitez pas a mettre mon code d'affiliation simcash XMHX3 cela me soutiens énormement <3 clarity`);
        }
      })
    })
  }
})

额外说明

  • 你之前代码错误地尝试从parsedJsonbalance.totalAssetInUsd取值,但CoinGecko API返回的结构是{dogecoin: {usd: 数值}},该问题已在修改后的代码中修正。
  • 若后续其他API也出现类似带冗余字符的响应,可复用match(/{[\s\S]*}/)[0]提取有效JSON,该正则会忽略前后无效字符,仅保留核心JSON结构。

内容的提问来源于stack exchange,提问作者ClarityGuardian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:35:17