Пустой массив в JSON превращается в объект
API возвращает список, но после фильтрации клиент видит объект с числовыми ключами. Для PHP важно, идут ли индексы подряд от нуля.
$items = array( "first", "second", "third" ); unset( $items[1] ); echo json_encode( array_values( $items ) );
Результат — массив из first и third. array_values уместен для списков; словарю с осмысленными ключами он навредит. Обрабатывайте ошибку кодирования, если данные приходят из внешнего источника: строки должны быть UTF-8. В контракте API отдельно зафиксируйте форму пустого результата.