30 lines
583 B
Go
30 lines
583 B
Go
package jsoninfo
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
func MarshalRef(value string, otherwise interface{}) ([]byte, error) {
|
|
if len(value) > 0 {
|
|
return json.Marshal(&refProps{
|
|
Ref: value,
|
|
})
|
|
}
|
|
return json.Marshal(otherwise)
|
|
}
|
|
|
|
func UnmarshalRef(data []byte, destRef *string, destOtherwise interface{}) error {
|
|
refProps := &refProps{}
|
|
if err := json.Unmarshal(data, refProps); err == nil {
|
|
ref := refProps.Ref
|
|
if len(ref) > 0 {
|
|
*destRef = ref
|
|
return nil
|
|
}
|
|
}
|
|
return json.Unmarshal(data, destOtherwise)
|
|
}
|
|
|
|
type refProps struct {
|
|
Ref string `json:"$ref,omitempty"`
|
|
}
|