前半に提示されているjsonをデコードするのにどのような定義を書けば良いのかを問われていると仮定します。
後半に書かれた定義は二点おかしいところがあります。
ひとつは構造体のフィールド名は大文字で始まっていないとjsonのデコード、エンコード対象になりません。
もう一つはerrorsはアレイ型なのでGo側の定義はスライスでなくてはなりません。
追記:
- Go側のerrorsの頭文字が小文字なのでNGです。
- Go側のCodeの型がstringだと数値を受け取れません。
jsonのerrosは"errors":[...]
こう書かれていますのでこれはjsonの配列です。
goの該当する型はスライスなのでスライス型を書く必要があります。
つまり errors struct{
と書いてるところは Errors []struct{
になります。
追記2:
https://play.golang.org/p/RKwUmzQatl3
go
1package main
2
3import (
4 "encoding/json"
5 "fmt"
6 "log"
7)
8
9const resp = `{"errors":[{"code":89,"message":"Invalid or expired token."}]}`
10
11type Error struct {
12 Errors []struct {
13 Code int `json:"code"`
14 Message string `json:"message"`
15 } `json:"errors"`
16}
17
18func main() {
19 var v Error
20 if err := json.Unmarshal([]byte(resp), &v); err != nil {
21 log.Fatalln(err)
22 }
23 fmt.Println(v)
24}