浏览代码

fix #202 #203 #204 map encoder not proplery initialized

Tao Wen 8 年之前
父节点
当前提交
d2a7335211
共有 1 个文件被更改,包括 5 次插入5 次删除
  1. 5 5
      feature_reflect.go

+ 5 - 5
feature_reflect.go

@@ -476,7 +476,7 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error
 		return &jsoniterNumberCodec{}, nil
 	}
 	if typ.Implements(marshalerType) {
-		checkIsEmpty, err := createCheckIsEmpty(typ)
+		checkIsEmpty, err := createCheckIsEmpty(cfg, typ)
 		if err != nil {
 			return nil, err
 		}
@@ -491,7 +491,7 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error
 		return encoder, nil
 	}
 	if reflect.PtrTo(typ).Implements(marshalerType) {
-		checkIsEmpty, err := createCheckIsEmpty(reflect.PtrTo(typ))
+		checkIsEmpty, err := createCheckIsEmpty(cfg, reflect.PtrTo(typ))
 		if err != nil {
 			return nil, err
 		}
@@ -503,7 +503,7 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error
 		return encoder, nil
 	}
 	if typ.Implements(textMarshalerType) {
-		checkIsEmpty, err := createCheckIsEmpty(typ)
+		checkIsEmpty, err := createCheckIsEmpty(cfg, typ)
 		if err != nil {
 			return nil, err
 		}
@@ -526,7 +526,7 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error
 	return createEncoderOfSimpleType(cfg, typ)
 }
 
-func createCheckIsEmpty(typ reflect.Type) (checkIsEmpty, error) {
+func createCheckIsEmpty(cfg *frozenConfig, typ reflect.Type) (checkIsEmpty, error) {
 	kind := typ.Kind()
 	switch kind {
 	case reflect.String:
@@ -571,7 +571,7 @@ func createCheckIsEmpty(typ reflect.Type) (checkIsEmpty, error) {
 	case reflect.Slice:
 		return &sliceEncoder{}, nil
 	case reflect.Map:
-		return &mapEncoder{}, nil
+		return encoderOfMap(cfg, typ)
 	case reflect.Ptr:
 		return &OptionalEncoder{}, nil
 	default: