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

NestJS调用Google Gemini API返回JSON格式数据异常问题

问题分析与解决

你的猜测没错,问题确实出在返回值处理部分。Gemini API虽然通过responseMimeType: 'application/json'指定了返回JSON格式,但result.response.text()方法返回的始终是字符串类型——哪怕内容是JSON结构。你需要手动将这个字符串解析为JSON对象,才能得到和教程一致的JSON格式返回结果。

修复步骤

  1. 调用result.response.text()获取字符串后,用JSON.parse()解析成JSON对象
  2. 添加异常处理,避免解析失败导致报错

修改后的代码:

async generateVideo(prompt: string) {
    try {
      const model = this.genAI.getGenerativeModel({
        model: 'gemini-1.5-flash',
      });

      const generationConfig = {
        temperature: 1,
        topP: 0.95,
        topK: 64,
        maxOutputTokens: 8192,
        responseMimeType: 'application/json',
      };

      const chatSession = model.startChat({
        generationConfig,
        history: [ /*Removed because it was too long */ ],
      });

      const result = await chatSession.sendMessage(prompt.toString());
      const jsonString = result.response.text();
      console.log(jsonString);
      // 解析字符串为JSON对象
      const jsonData = JSON.parse(jsonString);

      return {
        data: jsonData,
      };
    } catch (error) {
      // 可添加解析失败或API调用出错的处理逻辑
      console.error('JSON解析失败或API调用出错:', error);
      throw error; // 或返回错误信息给前端
    }
}

补充说明

  • 教程里的Next.js API路由可能在返回时自动做了JSON序列化处理,或者代码中已包含了解析步骤,所以看起来直接得到了JSON格式结果
  • 务必确保Gemini返回的内容是标准JSON格式,若提示词表述模糊,可能返回带多余文本的字符串导致解析失败。可在提示词末尾明确要求:"请严格返回标准JSON格式,不要添加任何额外说明文字"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:33:12