json:"-": поле никогда не сериализуется и не десериализуется.
json:",omitempty": при Marshal поле опускается, если значение пустое: false, 0, "", nil, пустой срез, пустая map.
Подводный камень omitempty: нулевое значение числа (0) или false не попадут в JSON. Для указателей можно использовать *int: nil - отсутствует, указатель на 0 - явный ноль.