Skip to content

Commit 3cef97a

Browse files
joeybloggsjoeybloggs
authored andcommitted
minor speed improvements
* added check for "-" in custom field name
1 parent 344bcd6 commit 3cef97a

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

validator.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ func (v *Validate) tranverseStruct(topStruct reflect.Value, currentStruct reflec
404404
numFields := current.NumField()
405405

406406
var fld reflect.StructField
407+
var customName string
407408

408409
for i := 0; i < numFields; i++ {
409410
fld = typ.Field(i)
@@ -421,10 +422,13 @@ func (v *Validate) tranverseStruct(topStruct reflect.Value, currentStruct reflec
421422
}
422423
}
423424

424-
customName := fld.Name
425+
customName = fld.Name
425426
if v.fieldNameTag != "" {
426-
name := strings.Split(fld.Tag.Get(v.fieldNameTag), ",")[0]
427-
if name != "" {
427+
428+
name := strings.SplitN(fld.Tag.Get(v.fieldNameTag), ",", 2)[0]
429+
430+
// dash check is for json "-" means don't output in json
431+
if name != "" && name != "-" {
428432
customName = name
429433
}
430434
}

validator_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4936,15 +4936,24 @@ func TestCustomFieldName(t *testing.T) {
49364936
B string `schema:"b" validate:"required"`
49374937
C string `schema:"c" validate:"required"`
49384938
D []bool `schema:"d" validate:"required"`
4939+
E string `schema:"-" validate:"required"`
49394940
}
49404941

49414942
a := &A{}
49424943

49434944
errs := New(&Config{TagName: "validate", FieldNameTag: "schema"}).Struct(a).(ValidationErrors)
4945+
NotEqual(t, errs, nil)
4946+
Equal(t, len(errs), 4)
49444947
Equal(t, errs["A.B"].Name, "b")
49454948
Equal(t, errs["A.C"].Name, "c")
49464949
Equal(t, errs["A.D"].Name, "d")
4950+
Equal(t, errs["A.E"].Name, "E")
49474951

49484952
errs = New(&Config{TagName: "validate"}).Struct(a).(ValidationErrors)
4953+
NotEqual(t, errs, nil)
4954+
Equal(t, len(errs), 4)
49494955
Equal(t, errs["A.B"].Name, "B")
4956+
Equal(t, errs["A.C"].Name, "C")
4957+
Equal(t, errs["A.D"].Name, "D")
4958+
Equal(t, errs["A.E"].Name, "E")
49504959
}

0 commit comments

Comments
 (0)