20 lines
372 B
Go
20 lines
372 B
Go
|
package opt
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"encoding/json"
|
||
|
)
|
||
|
|
||
|
type jsonMarshaler interface {
|
||
|
bool | string
|
||
|
}
|
||
|
|
||
|
// MarshalJSON makes it so json.Marshaler is implemented.
|
||
|
func (receiver Optional[jsonMarshal]) MarshalJSON() ([]byte, error) {
|
||
|
if !receiver.something {
|
||
|
return nil, fmt.Errorf("cannot marshal opt.Nothing[%T]()", receiver.value)
|
||
|
}
|
||
|
|
||
|
return json.Marshal(receiver.value)
|
||
|
}
|