github.com/sleungcy-sap/cli@v7.1.0+incompatible/types/null_string.go (about)

     1  package types
     2  
     3  import (
     4  	"encoding/json"
     5  )
     6  
     7  type NullString struct {
     8  	Value string
     9  	IsSet bool
    10  }
    11  
    12  func NewNullString(optionalValue ...string) NullString {
    13  	switch len(optionalValue) {
    14  	case 0:
    15  		return NullString{IsSet: false}
    16  	case 1:
    17  		return NullString{Value: optionalValue[0], IsSet: true}
    18  	default:
    19  		panic("Too many strings passed to nullable string constructor")
    20  	}
    21  }
    22  
    23  func (n NullString) MarshalJSON() ([]byte, error) {
    24  	if n.IsSet {
    25  		return json.Marshal(n.Value)
    26  	}
    27  	return json.Marshal(nil)
    28  }
    29  
    30  func (n *NullString) UnmarshalJSON(rawJSON []byte) error {
    31  	var value *string
    32  	err := json.Unmarshal(rawJSON, &value)
    33  	if err != nil {
    34  		return err
    35  	}
    36  
    37  	if value == nil {
    38  		n.Value = ""
    39  		n.IsSet = false
    40  		return nil
    41  	}
    42  
    43  	n.Value = *value
    44  	n.IsSet = true
    45  
    46  	return nil
    47  }