我正在尝试将一些json解组到结构中,出现以下内容:
package main
import (
"encoding/json"
"fmt"
"strings"
"time"
)
type Added struct {
Added *time.Time `json:"added"`
}
func main() {
st := strings.NewReader(`{"added": ""}`)
a := &Added{}
err := json.NewDecoder(st).Decode(&a)
if err != nil {
panic(err)
}
fmt.Println(a)
}
运行以上结果将导致:
panic: parsing time """" as ""2006-01-02T15:04:05Z07:00"": cannot parse """ as "2006"
于是我尝试一个自定义编组器:
package main
import (
"encoding/json"
"fmt"
"strings"
"time"
)
type Added struct {
Added *MyTime `json:"added"`
}
func main() {
st := strings.NewReader(`{"added": ""}`)
a := &Added{}
err := json.NewDecoder(st).Decode(&a)
if err != nil {
panic(err)
}
fmt.Println(a)
}
type MyTime struct {
*time.Time
}
func (m *MyTime) UnmarshalJSON(data []byte) error {
// Ignore null, like in the main JSON package.
if string(data) == "null" || string(data) == `""` {
return nil
}
// Fractional seconds are handled implicitly by Parse.
tt, err := time.Parse(`"`+time.RFC3339+`"`, string(data))
*m = MyTime{&tt}
return err
}
然后我得到:
&{%!v(PANIC=runtime error: invalid memory address or nil pointer dereference)}
那现在我该怎么办? 我只想处理json中的“”值.
并能够找到带有完整示例的游乐场。