我正在尝试使用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())
}
uuid
设置为私有属性,那应该命名为uUID
?同样的,uRL
,hTTPStatus
也是如此吗? - warvariucuuid
和httpStatus
(大小写需保持一致)。 - VonC