| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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))
- }
|