String $ test имеет неправильный формат json. Требуются ключи строкового типа. Если ваш $ test - это просто объект, у него есть ключ, а значение - это все числа. Вы можете его переформатировать.
$test = '{1:1,2:4}';
$formatKeyValues= substr($test, 1, -1);
$keys= [];
$values= [];
foreach(explode(",", $formatKeyValues) as $atribute) {
//php 7.2 above
[$key, $value] = explode(":", $atribute);
$keys[]= $key;
$values[]= (int)$value;
};
$jsonfromatted = json_encode(array_combine($keys, $values));
$object = json_decode($jsonfromatted);
var_dump($object);