Spaces:
Runtime error
Runtime error
| package dto | |
| import ( | |
| "encoding/json" | |
| "strconv" | |
| ) | |
| type IntValue int | |
| func (i *IntValue) UnmarshalJSON(b []byte) error { | |
| var n int | |
| if err := json.Unmarshal(b, &n); err == nil { | |
| *i = IntValue(n) | |
| return nil | |
| } | |
| var s string | |
| if err := json.Unmarshal(b, &s); err != nil { | |
| return err | |
| } | |
| v, err := strconv.Atoi(s) | |
| if err != nil { | |
| return err | |
| } | |
| *i = IntValue(v) | |
| return nil | |
| } | |
| func (i IntValue) MarshalJSON() ([]byte, error) { | |
| return json.Marshal(int(i)) | |
| } | |
| type BoolValue bool | |
| func (b *BoolValue) UnmarshalJSON(data []byte) error { | |
| var boolean bool | |
| if err := json.Unmarshal(data, &boolean); err == nil { | |
| *b = BoolValue(boolean) | |
| return nil | |
| } | |
| var str string | |
| if err := json.Unmarshal(data, &str); err != nil { | |
| return err | |
| } | |
| if str == "true" { | |
| *b = BoolValue(true) | |
| } else if str == "false" { | |
| *b = BoolValue(false) | |
| } else { | |
| return json.Unmarshal(data, &boolean) | |
| } | |
| return nil | |
| } | |
| func (b BoolValue) MarshalJSON() ([]byte, error) { | |
| return json.Marshal(bool(b)) | |
| } | |