Проблема в том, что приходит невалидный json, а конкретно лишняя последняя запятая. Убери ее и json_decode отработает нормально preg_replace('/("beauty":\s\d),/', $1, $previes)
Локальная ошибка - в отсутствии json_decode (и невалидности запрашиваемого json).
Глобальная в том, что вы вообще не понимаете, что происходит в вашем коде.
Возвращает данные json преобразованные в соответствующие типы PHP. Значения true, false и null возвращаются как TRUE, FALSE и NULL соответственно. NULL также возвращается, если json не может быть преобразован или закодированные данные содержат вложенных уровней больше, чем допустимый предел для рекурсий.
Что значит "какой-то не такой"? Это самый обычный json (только невалидны из-за запятой после последнего значения). Еще раз - решайте свою глобальную проблему тотального непонимания происходящего.