2017-01-16 17 views
0

構造体とJSONはGoの面白さではありません。GO Langは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":"[email protected]"} 
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); 

} 

メイン パッケージ結果は常に空の配列[]

+0

私はそれが簡単に私が見ているかを確認できるようにすることGoLangプレイグラウンドでコードを置く:https://play.golang.org/p/ Pebw7UgGRC – user3888307

答えて

2

ある文字列をエンコードあなたがしているので、検出が容易に有効なJSONではありませんUnmarshalで重大なエラーを無視してください:

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

あなたのJSOの最後の '}'が欠落しているようですN.

0

あなたのbase64でエンコードされた文字列が有効ではありません。

illegal base64 data at input byte 404 
関連する問題