我正在尝试将针对 go1.3 编写的一些代码移植到当前版本,并遇到了 json 解析行为在版本之间不同的情况。我们正在使用自定义解组器来解析某些特定的日期格式。看起来最近的版本在字符串中传递了额外的引号,而 1.3 没有。
这是错误还是有意更改?在这种情况下,编写与不同版本兼容的代码的最佳方式是什么。只是去寻找所有使用自定义解组器的地方,如果有的话,总是去掉额外的引号?不得不这样做会很遗憾 - 所以我希望有更好的方法。
package main
import "encoding/json"
import "fmt"
import "time"
type Timestamp1 time.Time
func (t *Timestamp1) UnmarshalJSON(b []byte) (err error) {
fmt.Println("String to parse as timestamp:", string(b))
parsedTime, err := time.Parse("2006-01-02T15:04:05", string(b))
if err == nil {
*t = Timestamp1(parsedTime)
return nil
} else {
return err
}
}
type S struct {
LastUpdatedDate Timestamp1 `json:"last_updated_date,string"`
}
func main() {
s := `{"last_updated_date" : "2015-11-03T10:00:00"}`
var s1 S
err := json.Unmarshal([]byte(s), &s1)
fmt.Println(err)
fmt.Println(s1)
}
江户川乱折腾
相关分类