我正在尝试使用 json.Unmarshaler 接口将 UUID 解组为结构上的 uuid.UUID 字段。我创建了一个名为 myUUID 的自定义类型,一切正常,直到我尝试访问通常位于 uuid.UUID 上的方法。我该如何处理?我对 Go 比较陌生,所以也许我还没有完全理解自定义类型。
package main
import (
"encoding/json"
"errors"
"fmt"
"code.google.com/p/go-uuid/uuid"
)
var jsonstring = `
{
"uuid": "273b62ad-a99d-48be-8d80-ccc55ef688b4"
}
`
type myUUID uuid.UUID
type Data struct {
uuid myUUID
}
func (u *myUUID) UnmarshalJson(b []byte) error {
id := uuid.Parse(string(b[:]))
if id == nil {
return errors.New("Could not parse UUID")
}
*u = myUUID(id)
return nil
}
func main() {
d := new(Data)
err := json.Unmarshal([]byte(jsonstring), &d)
if err != nil {
fmt.Printf("%s", err)
}
fmt.Println(d.uuid.String())
}
蓝山帝景
相关分类