Overview

Recognizer

json.Serializer
Overview

MetaFactory
type MetaFactory interface {// Interpret should return the version and kind of the wire-format of// the object.Interpret(data []byte) (*schema.GroupVersionKind, error)}
SimpleMetaFactory
func (SimpleMetaFactory) Interpret(data []byte) (*schema.GroupVersionKind, error) {findKind := struct {// +optionalAPIVersion string `json:"apiVersion,omitempty"`// +optionalKind string `json:"kind,omitempty"`}{}if err := json.Unmarshal(data, &findKind); err != nil {return nil, fmt.Errorf("couldn't get version/kind; json parse error: %v", err)}gv, err := schema.ParseGroupVersion(findKind.APIVersion)if err != nil {return nil, err}return &schema.GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: findKind.Kind}, nil}
Extensions
Overview

过程详解
全局定义
var serializerExtensions = []func(*runtime.Scheme) (serializerType, bool){}
加载过程
func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory) []serializerType {// ...for _, fn := range serializerExtensions {if serializer, ok := fn(scheme); ok {serializers = append(serializers, serializer)}}return serializers}
