我想獲得一個HTTP請求體,它是一個json對象並將其解碼爲我定義的Go結構。Json解碼無法解析json中的時間戳成Go結構
結構的兩個字段是time.Time
類型。雖然只有一個這種類型的領域,一切工作正常。
如果我在旅途結構不止一個time.Time
類型的字段我不能解碼,並得到了錯誤:
2014/11/01 01:07:04 parsing time "null" as ""2006-01-02T15:04:05Z07:00"": cannot parse "null" as """
的問題是在解碼線。儘管我進行了調試,但我仍然可以達成有意義的結果。這個問題似乎很奇怪,實際上不應該是這樣。
我在這裏錯過了什麼?
func register(w http.ResponseWriter, r *http.Request){
//Read Request Body JSON Into Go Types
var requestBody = []byte(`{"username":"qwewwwqweqwe","password":"can","usertype":"student","firstname":"","midname":null,"surname":null,"signuptimestamp":null,"userstatus":null,"phone":null,"email":null,"address":null,"city":null,"country":null,"language":null,"lastlogintimestamp":null}`)
type RegisterStructure struct {
Id int `json:"id"`
Timestamp time.Time `json:"timestamp,omitemty"`
SignupTimestamp time.Time `json:"signuptimestamp,omitempty"`
Username string `json:"username"`
Password string `json:"password"`
UserType string `json:"usertype"`
FirstName string `json:"firstname"`
Midname string `json:"midname"`
Surname string `json:"surname"`
UserStatus string `json:"userstatus"`
Phone string `json:"phone"`
Email string `json:"email"`
Address string `json:"address"`
City string `json:"city"`
Country string `json:"country"`
Language string `json:"language"`
//LastLoginTimestamp time.Time `json:"lastlogintimestamp,omitempty"`
}
var registerInstance RegisterStructure
var now = time.Now()
fmt.Printf("now is %v", now)
fmt.Println()
fmt.Printf("1 registerInstance after inited here is %v", registerInstance)
fmt.Println()
registerInstance = RegisterStructure{Timestamp: now, SignupTimestamp: now,}
fmt.Printf("registerInstance after set to var now here is %v", registerInstance)
fmt.Println()
dec := json.NewDecoder(bytes.NewReader(requestBody))
err = dec.Decode(®isterInstance)
if err != nil {
fmt.Printf("error happens here.")
log.Fatal(err)
}
沒有足夠的信息複製或驗證。請修改問題以顯示示例請求主體。如果有幫助,請執行:'fmt.Println(「%#v」,requestBody)',這樣我們就知道正在分析什麼樣的東西,並且可以嘗試重現您的問題。另外,你的問題並沒有令人信服地表明解析是問題:你怎麼知道解析導致了問題?目前,你已經顯示了日誌消息,但是日誌可能沒有顯示正確的東西?程序中的哪一行對應於程序中的哪個日誌記錄?我們不知道。 – dyoo 2014-10-31 23:54:43
我用你的fmt代碼輸出後我的請求正文是這樣的:'%#v [123 34 117 115 101 114 110 97 109 101 34 ........ 17 115 101 114 115 116 97 116 117 115 34 58 110 117 108 108 44 34 8 108 125]' – 2014-10-31 23:58:43
關於測井線;我看不到'fmt.Printf(「錯誤發生在這裏。」)之後的任何日誌行''。所以我猜測編碼是除了與解析有關的錯誤消息的引導之外的問題。 – 2014-10-31 23:59:25