Cannot construct instance of `***.***.ArrayList` (although at least one Creator ...

2025年10月15日 14:13 响应: 2.43秒 状态: success

🚨 错误信息

JSON parse error: Cannot construct instance of `***.***.ArrayList` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('```'); nested exception is ***.***.***.***.***.MismatchedInputException: Cannot construct instance of `***.***.ArrayList` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('```') at [Source: (***.***.***.StreamUtils$NonClosingInputStream); line: 1, column: 47372] (through reference chain: ***.***.***.***.***.***.***.ChatCompletionReq["stop"])

🤖 AI解决方案

{
  "error_message": "JSON parse error: Cannot construct instance of `***.***.ArrayList` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('
'); nested exception is .....MismatchedInputException: Cannot construct instance of .*.ArrayList (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('
')",
  "details": "at [Source: (***.***.***.StreamUtils$NonClosingInputStream); line: 1, column: 47372] (through reference chain: ***.***.***.***.***.***.***.ChatCompletionReq[\"stop\"])"
}

  • 错误翻译
  •     JSON解析错误:无法实例化`***.***.ArrayList`(尽管至少存在一个构造函数):没有可以从字符串值('
    ')反序列化的String参数的构造函数/工厂方法。
    *   **原因分析**:
        JSON数据中,`stop`字段期望接收一个字符串列表(`ArrayList`),但实际接收到的值却是包含三个反引号(` 
    )的字符串,Jackson库无法将这个字符串直接转换成一个ArrayList`。

  • 解决方案

  • 确保发送给API的JSON数据中,stop字段的值是一个合法的JSON数组(字符串列表)。例如:
        {
          "model": "gpt-3.5-turbo",
          "messages": [{"role": "user", "content": "你好"}],
          "stop": ["string1", "string2"]
        }
        

    或者,如果stop字段允许为空,则可以将其设置为null或一个空数组[],具体取决于API的定义。

  • 预防措施

1. 在发送API请求前,对要发送的JSON数据进行严格的格式校验,特别是对于期望为列表类型的字段。
2. 使用API SDK或封装好的请求工具,它们通常会处理好数据类型的转换和校验,减少直接操作JSON字符串出错的概率。