繁体   English   中英

GO Lang解码JSON(不提取简单数组)

[英]GO Lang decode JSON (simple array not being picked up)

在Go中,结构和JSON并不是很有趣。

我有一些JSON和结构的简单示例。 一切似乎都可以解析了,但是由于某种原因,数组没有被拾取。

谁能告诉我我可能会想念的东西。

代码---包主

import (
    "encoding/base64"
    "fmt"
    "encoding/json"
)

type Oauth struct {
Aud string   `json:"aud"`
Cid string   `json:"cid"`
Exp int      `json:"exp"`
Iat int      `json:"iat"`
Iss string   `json:"iss"`
Jti string   `json:"jti"`
Scp []string `json:"scp"`
Sub string   `json:"sub"`
UID string   `json:"uid"`
Ver int      `json:"ver"`
}

func main () {

// This is the String {"ver":1,"jti":"AT.zgv9oQpw-7l3BCg6Xb5NCG2Pf8zxgiQa1EUBXycmaDk","iss":"https://companyx.okta.com/oauth2/aus1a4ibdat0JYw5s1d8","aud":"http://localhost","iat":1484538606,"exp":1484542206,"cid":"3jmNvVCFZ5F6lWOzIONO","uid":"00uy74c0h7NGTLBSXQOC","scp":["read","remove","reserve"],"sub":"oktaadmin@okta.com"}
encoded := "eyJ2ZXIiOjEsImp0aSI6IkFULnpndjlvUXB3LTdsM0JDZzZYYjVOQ0cyUGY4enhnaVFhMUVVQlh5Y21hRGsiLCJpc3MiOiJodHRwczovL2NvbXBhbnl4Lm9rdGEuY29tL29hdXRoMi9hdXMxYTRpYmRhdDBKWXc1czFkOCIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3QiLCJpYXQiOjE0ODQ1Mzg2MDYsImV4cCI6MTQ4NDU0MjIwNiwiY2lkIjoiM2ptTnZWQ0ZaNUY2bFdPeklPTk8iLCJ1aWQiOiIwMHV5NzRjMGg3TkdUTEJTWFFPQyIsInNjcCI6WyJyZWFkIiwicmVtb3ZlIiwicmVzZXJ2ZSJdLCJzdWIiOiJva3RhYWRtaW5Ab2t0YS5jb20ifQ"

data, _ := base64.StdEncoding.DecodeString(encoded)

fmt.Println(string(data))
fmt.Println ("")

var x Oauth
json.Unmarshal([]byte(data), &x)
fmt.Printf ("%+v",x.Scp);

}

结果始终是一个空数组[]

编码的字符串不是有效的JSON,易于检测,因为您忽略了Unmarshal上的重要错误,请尝试以下操作:

err := json.Unmarshal(data, &x)
fmt.Println(err)

您好像错过了JSON的最后一个'}'。

您的base64编码的字符串无效:

illegal base64 data at input byte 404

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM