это вам лучше сделать структуру Variant, которая была бы частью десереализуемого жсона. для этого типа Variant определить метод UnmarshalJSON, который бы подхватывал нужный тип и сохранял бы в интерфейс-поле вашего Variant-типа. а Variant-тип сделать с методом Unwrap(), чтобы он возвращал соотв. реальный элемент