解组 datastore.ByteString 去
Unmarshal datastore.ByteString go
您好,我正在尝试解组包含 ByteString 字段的数据存储实体。
但是我遇到了解组错误,我想不出解组它的方法
我应该创建自己的 PropertyLoadSaver ??
json: cannot unmarshal string into Go value of type
datastore.ByteString
package main
import (
"encoding/json"
"fmt"
"google.golang.org/appengine/datastore"
)
type User struct {
SubscriptionToken datastore.ByteString
}
func main() {
u := new(User)
str := "{\"SubscriptionToken\":\"YWR66969hjgkgkgo\"}"
err := json.Unmarshal([]byte(str), &u)
if err != nil {
fmt.Println(err)
}
fmt.Println(u)
}
你需要在这里使用一些中间类型。 json 只是有一个字符串,如果不执行一些自定义解组实现,就不能直接将它解组为 ByteString
。就我个人而言,我只会使用类似的东西;
type jsonUser struct {
SubscriptionToken string
}
type User struct {
SubscriptionToken datastore.ByteString
}
然后提供转换方法;
func NewUser(u jsonUser) *User {
return &User{SubscriptionToken: StringToByteString(u.SubscriptionToken)}
}
因此,解组为 jsonUser
类型,然后将其转换为 User
您好,我正在尝试解组包含 ByteString 字段的数据存储实体。
但是我遇到了解组错误,我想不出解组它的方法 我应该创建自己的 PropertyLoadSaver ??
json: cannot unmarshal string into Go value of type
datastore.ByteString
package main
import (
"encoding/json"
"fmt"
"google.golang.org/appengine/datastore"
)
type User struct {
SubscriptionToken datastore.ByteString
}
func main() {
u := new(User)
str := "{\"SubscriptionToken\":\"YWR66969hjgkgkgo\"}"
err := json.Unmarshal([]byte(str), &u)
if err != nil {
fmt.Println(err)
}
fmt.Println(u)
}
你需要在这里使用一些中间类型。 json 只是有一个字符串,如果不执行一些自定义解组实现,就不能直接将它解组为 ByteString
。就我个人而言,我只会使用类似的东西;
type jsonUser struct {
SubscriptionToken string
}
type User struct {
SubscriptionToken datastore.ByteString
}
然后提供转换方法;
func NewUser(u jsonUser) *User {
return &User{SubscriptionToken: StringToByteString(u.SubscriptionToken)}
}
因此,解组为 jsonUser
类型,然后将其转换为 User