laravel使用Dingo\Api寫接口跟android對接時,android一直反應解析錯誤,沒法解析數據。php
{ "status_code":200, "message":"請求成功", "data":[ { "type":2, "message_id":1383, "title":"視頻點贊", "content":"讚了你的視頻", "created":1565922723, "user_id":56, "user_nickname":"阿葛", "message_url":"", "video_info":[ ] }, { "type":2, "message_id":1338, "title":"評論點贊", "content":"讚了你的評論", "created":1565784398, "user_id":41, "user_nickname":"阿城", "message_url":"", "video_info":{ "id":3214, "title":"好一個如來神掌滿分?!", "cover":[], "dynamic_cover":[], "play_url":"", "play_times":15034, "play_count":676, } } ] }
因爲 video_info 沒有找到,直接返回的 new stdClass(),但願能返回 空對象, 可是,到 response()->json() 時 ,直接變成了空數組。android
由於使用 Dingo\Api 時,會有不一樣的響應處理,有時候,會經過 \Dingo\Api\Http\Response::makeFromJson 解碼內容,而後建立新實例,把 {} 變成了 []。laravel
這裏咱們手動處理返回的數據。json
function returnJson($data = [], $code = '', $message = '') { $result = [ 'status_code' => $code, 'message' => $message, 'data' => $data, ]; //手動編碼,避免dingo/api把空對象轉成空數組 $result = json_encode($result, JSON_UNESCAPED_UNICODE); return response()->json($result); }