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.