Fix processing of anonymous field

This commit is contained in:
Masaaki Goshima 2020-08-22 18:15:39 +09:00
parent 45acfe9424
commit cdf2498285
2 changed files with 9 additions and 4 deletions

View File

@ -622,7 +622,6 @@ type structFieldPair struct {
}
func (e *Encoder) anonymousStructFieldPairMap(typ *rtype, tags structTags, valueCode *structFieldCode) map[string][]structFieldPair {
//fmt.Println("type = ", typ, "valueCode = ", valueCode.dump())
anonymousFields := map[string][]structFieldPair{}
f := valueCode
var prevAnonymousField *structFieldCode

View File

@ -10,9 +10,15 @@ func getTag(field reflect.StructField) string {
}
func isIgnoredStructField(field reflect.StructField) bool {
if field.PkgPath != "" && !field.Anonymous {
// private field
return true
if field.PkgPath != "" {
if field.Anonymous {
if !(field.Type.Kind() == reflect.Ptr && field.Type.Elem().Kind() == reflect.Struct) && field.Type.Kind() != reflect.Struct {
return true
}
} else {
// private field
return true
}
}
tag := getTag(field)
if tag == "-" {