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解决方案

``json
{
"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数组(字符串列表)。例如:
    json
    {
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "你好"}],
    "stop": ["string1", "string2"]
    }

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

  • 预防措施

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