英文:
Parsing JSON in Golang doesn't Populate Object
问题
作为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)
	}
}
希望这可以帮助你解决问题。
英文:
As part of an Oauth application, I need to decode some JSON. But I cannot get the object populated. There is no failure, but the data just isn't there. I've tried a bunch of different ways...
I have recreated the problem at 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)
	}
}
答案1
得分: 3
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"`
}
英文:
The JSON encoding package works with exported fields only. Capitalize the field names to export them:
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"`
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论