Decodifique a matriz JSON de nível superior em uma fatia de estruturas em golang

Não é incomum que APIs JSON públicas respondam com matrizes de nível superior, em vez de um objeto JSON completo. Se você deseja converter essa matriz JSON em uma fatia de estruturas com os itens da matriz, veja como você pode fazer isso:

package main

import "fmt"
import "encoding/json"

type
PublicKey struct {
Id int
Key string
}

type
KeysResponse struct {
Collection []PublicKey
}

func main
() {
keysBody
:= []byte(`[{"id": 1,"key": "-"},{"id": 2,"key": "-"},{"id": 3,"key": "-"}]`)
keys
:= make([]PublicKey,0)
json
.Unmarshal(keysBody, &keys)
fmt
.Printf("%#v", keys)
}

Mesmo código no playground: http://play.golang.org/p/CvwXURmSCY

Golang não é uma linguagem muito complicada, mas tem padrões de documentação muito pobres em comparação com coisas mais populares, como Ruby ou JS. Na verdade, tive que descobrir isso durante a nossa pesquisa no Google para encontrar a resposta aqui (em uma revisão de código da fonte de golang!): Https://codereview.appspot.com/154121/patch/9/10

Espero que ajude.