🔨 Refactor method 'UnmarshalJSON' of 'option[T]'

This commit is contained in:
Aykhan Shahsuvarov 2024-11-28 04:20:01 +04:00
parent 2e6110e54a
commit d392d4a787
2 changed files with 9 additions and 4 deletions

View File

@ -1,7 +1,7 @@
{ {
"method": "GET", "method": "GET",
"url": "https://example.com", "url": "https://example.com",
"no_proxy_check": false, "no_proxy_check": true,
"timeout": 10000, "timeout": 10000,
"dodos_count": 50, "dodos_count": 50,
"request_count": 1000, "request_count": 1000,

View File

@ -65,12 +65,17 @@ func (o *option[T]) SetNone() {
} }
func (o *option[T]) UnmarshalJSON(data []byte) error { func (o *option[T]) UnmarshalJSON(data []byte) error {
if string(data) == "null" { if string(data) == "null" || len(data) == 0 {
o.none = true o.SetNone()
return nil return nil
} }
if err := json.Unmarshal(data, &o.value); err != nil {
o.SetNone()
return err
}
o.none = false o.none = false
return json.Unmarshal(data, &o.value) return nil
} }
func NewOption[T NonNilT](value T) *option[T] { func NewOption[T NonNilT](value T) *option[T] {