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

Laravel 7解码Postman form_data传入的JSON对象报错求助

解决Laravel 7中form-data传递JSON触发的json_decode类型错误

嘿,我来帮你搞定这个报错问题!你碰到的json_decode() expects parameter 1 to be string, array given错误,本质原因是Postman的form-data格式会自动把你传入的JSON对象解析成PHP数组,但你却对已经是数组的$request->order_details调用了json_decode()——这个函数只接受字符串参数,所以直接触发了类型错误。

为什么会出现这个问题?

当你在Postman的form-data里把order_details的value设为一个JSON对象(比如{"item": "pizza", "qty": 2})时,Laravel的Request类会自动帮你把这个JSON解析成对应的PHP数组。这时候$request->order_details已经是数组类型了,再传给json_decode()肯定会报错。

两种可行的解决方案

方案1:直接用Laravel已解析好的数组(强烈推荐)

既然Laravel已经帮你完成了解析工作,直接用这个数组就行,完全没必要多此一举调用json_decode()。如果需要把数组转为对象,用(object)强制转换或者Laravel的集合都可以:

修改后的完整代码:

public function makeOrder(Request $request) { 
    $validator = Validator::make($request->all(), [ 
        'table_id' => 'required', 
        'date' => 'required', 
        'time_slot' => 'required|string', 
        'product_ids' => 'required|array', 
        'total_bill' => 'required',
        'order_details' => 'required|array' // 建议加上这条验证,提前拦截格式错误的请求
    ]); 

    if ($validator->fails()) { 
        return response()->json(['error' => $validator->messages()->first(), 'code' => 404], 404); 
    } 

    // 直接使用数组,或者按需转成对象/集合
    $orderDetails = $request->order_details;
    // 转对象:$orderDetails = (object) $request->order_details;
    // 转Laravel集合:$orderDetails = collect($request->order_details);

    return response()->json(['order' => $orderDetails, 'code' => 200], 200); 
}

方案2:传递JSON字符串(不推荐,没必要绕弯)

如果你非要手动解析JSON,那得在Postman里把order_details的value用双引号包裹,把JSON对象转成字符串(比如"{\"item\":\"pizza\",\"qty\":2}")。这样Laravel收到的就是字符串,json_decode()就能正常工作了:

// 仅当order_details是字符串时用这个写法
return response()->json(['order' => json_decode($request->order_details), 'code' => 200], 200);

额外小建议

  • 一定要在验证规则里明确order_details的格式(要么required|array,要么required|string),这样能在请求进入业务逻辑前就拦截不符合要求的参数,避免后续报错。
  • 如果你的接口主要是接收JSON请求,更推荐用Postman的raw格式并选择JSON类型传参,这样Laravel解析起来更直接,代码逻辑也更清晰。

内容的提问来源于stack exchange,提问作者faizan zafer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:21:54