У reflect.StructField есть поле Tag типа reflect.StructTag. Методы Get(key) и Lookup(key) извлекают значение тега по ключу.
t := reflect.TypeOf(User{})
for i := 0; i < t.NumField(); i++ {
f := t.Field(i)
jsonVal := f.Tag.Get("json")
fmt.Println(f.Name, "json:", jsonVal)
}Lookup возвращает второе значение bool, чтобы отличить отсутствие тега от пустого значения.