2015-06-18 3 views
0

Итак, я попытался что-то на основании примера here в моем коде и не получил никаких данных, но не ошибся. Код:JSON-декодирование в golang

import (
    "io" 
    "fmt" 
    "net/http" 
    "encoding/json" 
) 

type Credential struct { 
    username string `json:"username"` 
    password string `json:"password"` 
} 

func login(res http.ResponseWriter, req *http.Request) { 
    if req.Method == "POST" { 
     cred := Credential{} 
     err := json.NewDecoder(req.Body).Decode(&cred) 
     if err != nil { 
      panic("can't decode") 
     } 
     fmt.Println("credentials: " + cred.username + " , " + cred.password) 
    } 
} 

Испытываю с

завитка -X POST -H "Accept: приложения/JSON" --data "{\" имя пользователя \ ": \" х \», \ "пароль \": \ "у \"}»127.0.0.1:8000/login -i

И сервер печатает:

учетные данные:,

Почему в cred.username и cred.password ничего нет?

+1

Возможно, это не связано, но всегда рекомендуется указывать тип содержимого в заголовке, а также -H "Content-Type: application/json". – kichik

ответ

4

golang использовать первый символ поля для объявления публичных или частных для этой структуры. поэтому изменить username на Username