Ao invés de ler todo o fluxo gulosamente em memória e passá-lo para json.Unmarshal:

1
json.Unmarshal(umMonteDeBytes, &minhaStruct)

Nós podemos delegar a leitura do fluxo para os nossos queridos mestres da golang:

1
json.NewDecoder(meuIOReader).Decode(&minhaStruct)

E ler arquivos de multi-giga(tera?)bytes sem suor. Também funciona com xml.NewDecoder.

_

= M =