Приведение в качестве объекта до кодирования работало у меня на 5.2.5:
$array = array(1,2,3);
echo json_encode($array);
// [0,1,2]
echo json_encode((object)$array);
// {"0":1,"1":2,"2":3}
И использование PHP 5.3 дает тот же результат:
echo json_encode($array);
// [0,1,2]
echo json_encode($array, JSON_FORCE_OBJECT);
// {"0":1,"1":2,"2":3}
Вы также можете попробовать это решение из другого потока. Не уверен, каков ваш точный вариант использования.