code: func (s *SchemaField) MarshalJSON() ([]byte, error) {
  	if s.Type.Type() == Null || (s.Type.Type() == Union && s.Type.(*UnionSchema).Types[0].Type() == Null) {
  		return json.Marshal(struct {
  			Name    string      `json:"name,omitempty"`
  			Doc     string      `json:"doc,omitempty"`
  			Default interface{} `json:"default"`
  			Type    Schema      `json:"type,omitempty"`
  		}{
  			Name:    s.Name,
  			Doc:     s.Doc,
  			Default: s.Default,
  			Type:    s.Type,
  		})
  	}
  
  	return json.Marshal(struct {
  		Name    string      `json:"name,omitempty"`
  		Doc     string      `json:"doc,omitempty"`
  		Default interface{} `json:"default,omitempty"`
  		Type    Schema      `json:"type,omitempty"`
  	}{
  		Name:    s.Name,
  		Doc:     s.Doc,
  		Default: s.Default,
  		Type:    s.Type,
  	})
  }
docs: // MarshalJSON serializes the given schema field as JSON.