|
|
@@ -227,9 +227,6 @@ func describeStruct(cfg *frozenConfig, typ reflect.Type) (*StructDescriptor, err
|
|
|
bindings := []*Binding{}
|
|
|
for i := 0; i < typ.NumField(); i++ {
|
|
|
field := typ.Field(i)
|
|
|
- if unicode.IsLower([]rune(field.Name)[0]) {
|
|
|
- continue
|
|
|
- }
|
|
|
tag := field.Tag.Get(cfg.getTagKey())
|
|
|
tagParts := strings.Split(tag, ",")
|
|
|
if tag == "-" {
|
|
|
@@ -272,7 +269,7 @@ func describeStruct(cfg *frozenConfig, typ reflect.Type) (*StructDescriptor, err
|
|
|
if decoder == nil {
|
|
|
var err error
|
|
|
decoder, err = decoderOfType(cfg, field.Type)
|
|
|
- if err != nil {
|
|
|
+ if len(fieldNames) > 0 && err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
}
|
|
|
@@ -280,11 +277,11 @@ func describeStruct(cfg *frozenConfig, typ reflect.Type) (*StructDescriptor, err
|
|
|
if encoder == nil {
|
|
|
var err error
|
|
|
encoder, err = encoderOfType(cfg, field.Type)
|
|
|
- if err != nil {
|
|
|
+ if len(fieldNames) > 0 && err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
// map is stored as pointer in the struct
|
|
|
- if field.Type.Kind() == reflect.Map {
|
|
|
+ if encoder != nil && field.Type.Kind() == reflect.Map {
|
|
|
encoder = &optionalEncoder{encoder}
|
|
|
}
|
|
|
}
|