diff --git a/mysubaru.go b/mysubaru.go index dc4311a..256e360 100644 --- a/mysubaru.go +++ b/mysubaru.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "log/slog" + "strings" "time" ) @@ -496,6 +497,11 @@ type CustomTime1 struct { func (ct *CustomTime1) UnmarshalJSON(b []byte) (err error) { // Use the correct layout string for the desired format const layout = "2006-01-02T15:04:05" + s := strings.Trim(string(b), `"`) // Remove surrounding quotes + if s == "null" { + ct.Time = time.Time{} + return nil + } ct.Time, err = time.Parse(layout, string(b)) return } @@ -507,7 +513,13 @@ type CustomTime2 struct { // UnmarshalJSON implements the json.Unmarshaler interface func (ct *CustomTime2) UnmarshalJSON(b []byte) (err error) { + // Use the correct layout string for the desired format const layout = "2006-01-02T15:04:05-0700" - ct.Time, err = time.Parse(layout, string(b)) // Parse the string using the custom layout + s := strings.Trim(string(b), `"`) // Remove surrounding quotes + if s == "null" { + ct.Time = time.Time{} + return nil + } + ct.Time, err = time.Parse(layout, s) // Parse the string with your custom layout return }