2015-05-07 31 views
0

嗨即時嘗試解組數據存儲實體包含字節串字段。Unmarshal datastore.ByteString去

但是我得到unmarshal錯誤,我想不出一種解組方法 我應該創建我自己的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) 
} 

回答

1

你需要在這裏使用一些中間類型。 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