向Laravel API路由发送JSON数据时遭遇JSON验证错误
解决Laravel中withdraws字段验证提示“必须是有效的JSON字符串”的问题
以下是几种常见的排查和解决方法:
检查前端数据格式
若前端直接传递数组/对象(比如JS中的{key: value}或[]),未转成JSON字符串,Laravel会将其解析为普通表单参数而非JSON字符串。此时需在前端把数据转为JSON字符串后再发送,比如JS中使用JSON.stringify(withdrawsData)处理。调整请求头设置
若前端发送JSON格式请求体,务必确保请求头的Content-Type设为application/json。Laravel会自动解析JSON请求体;如果是表单提交(application/x-www-form-urlencoded或multipart/form-data),要保证传递的JSON字符串没有转义错误。修改验证规则(若实际需求是数组)
如果你本来就需要接收数组类型的withdraws数据,没必要用json验证规则,直接换成array规则,还能结合array:*规则做更细致的验证,示例:return [ 'mobile' => ['required', 'string'], 'withdraws' => 'required|array', // 可选:若数组内是对象,可验证每个元素的字段 'withdraws.*.amount' => 'required|numeric', ];确认数据传递方式
如果是表单提交(比如POST表单),要保证withdraws字段的值是标准JSON字符串,比如输入框内容为[{"amount":100}]这类格式,而非直接写数组结构。
内容的提问来源于stack exchange,提问作者hossein ir
相关产品推荐
相关产品推荐

