statping/types/null/marshal.go

76 lines
1.4 KiB
Go

package null
import (
"database/sql/driver"
"encoding/json"
"gopkg.in/yaml.v2"
)
func (s NullString) Value() (driver.Value, error) {
return s.String, nil
}
// MarshalJSON for NullInt64
func (i NullInt64) MarshalJSON() ([]byte, error) {
if !i.Valid {
return []byte("null"), nil
}
return json.Marshal(i.Int64)
}
// MarshalJSON for NullFloat64
func (f NullFloat64) MarshalJSON() ([]byte, error) {
if !f.Valid {
return []byte("null"), nil
}
return json.Marshal(f.Float64)
}
// MarshalJSON for NullBool
func (bb NullBool) MarshalJSON() ([]byte, error) {
if !bb.Valid {
return []byte("null"), nil
}
return json.Marshal(bb.Bool)
}
// MarshalJSON for NullString
func (s NullString) MarshalJSON() ([]byte, error) {
if !s.Valid {
return json.Marshal(nil)
}
return json.Marshal(s.String)
}
// MarshalYAML for NullInt64
func (i NullInt64) MarshalYAML() (interface{}, error) {
if !i.Valid {
return 0, nil
}
return yaml.Marshal(i.Int64)
}
// MarshalYAML for NullFloat64
func (f NullFloat64) MarshalYAML() (interface{}, error) {
if !f.Valid {
return 0.0, nil
}
return yaml.Marshal(f.Float64)
}
// MarshalYAML for NullBool
func (bb NullBool) MarshalYAML() (interface{}, error) {
if !bb.Valid {
return false, nil
}
return yaml.Marshal(bb.Bool)
}
// MarshalYAML for NullString
func (s NullString) MarshalYAML() (interface{}, error) {
if !s.Valid {
return "", nil
}
return yaml.Marshal(s.String)
}