作为Oauth应用程序的一部分,我需要解码一些JSON。但是我无法填充对象。没有失败,但数据并不存在。我尝试了很多不同的方法......
我已在http://play.golang.org/p/QGkcl61cmv
重新创建了该问题import (
"encoding/json"
"fmt"
"strings"
)
type RefreshTokenData struct {
id string `json:"id"`
issued_at string `json:"issued_at"`
scope string `json:"scope"`
instance_url string `json:"instance_url"`
token_type string `json:"token_type"`
refresh_token string `json:"refresh_token"`
signature string `json:"signature"`
access_token string `json:"access_token"`
}
func main() {
var tokenResp = `
{"id":"https://google.com","issued_at":"1423698767063",
"scope":"full refresh_token",
"instance_url":"https://na15.salesforce.com",
"token_type":"Bearer",
"refresh_token":"2os53__CCU5JX_yZXE",
"id_token":"5jSH0Oqm7Q4fc0xkE9NOvW8cA13U",
"signature":"/599EkGVIBsKPFRNkg+58wZ3Q7AFyclvIGvCrxVeyTo=",
"access_token":"sadfasdfasdfasdfdsa"}`
var tokenData RefreshTokenData
decoder := json.NewDecoder(strings.NewReader(tokenResp))
if jsonerr := decoder.Decode(&tokenData); jsonerr != nil {
fmt.Println("****Failed to decode json")
} else {
fmt.Println("****Refresh token: " + tokenData.refresh_token)
}
}
答案 0 :(得分:3)
JSON encoding package仅适用于exported fields。将字段名称大写以导出它们:
type RefreshTokenData struct {
Id string `json:"id"`
Issued_at string `json:"issued_at"`
Scope string `json:"scope"`
Instance_url string `json:"instance_url"`
Token_type string `json:"token_type"`
Refresh_token string `json:"refresh_token"`
Signature string `json:"signature"`
Access_token string `json:"access_token"`
}