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字符串出错的概率。