laravel使用Dingo\Api寫接口跟android對接時,android一直反應解析錯誤,無法解析數據。
{
"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() 時 ,直接變成了空數組。
因為使用 Dingo\Api 時,會有不同的響應處理,有時候,會通過 \Dingo\Api\Http\Response::makeFromJson 解碼內容,然后創建新實例,把 {} 變成了 []。
這里我們手動處理返回的數據。
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);
}
