Acessando chaves e valores JSON profundamente aninhados no Go
Ao trabalhar com estruturas de dados JSON complexas, pode ser um desafio recuperar valores profundamente aninhados usando apenas interfaces Go padrão. Para superar isso, considere utilizar o pacote go-simplejson (github.com/bitly/go-simplejson).
Este pacote fornece uma API fácil de usar para navegar em dados JSON por meio de uma sintaxe simples. Veja como você pode acessar os valores de "tempo" em seu JSON usando go-simplejson:
package main
import (
"encoding/json"
"fmt"
"github.com/bitly/go-simplejson"
)
func main() {
msg := `{"args":[{"time":"2013-05-21 16:57:17"}],"name":"send:time"}`
jsonBytes := []byte(msg)
js, err := simplejson.NewJson(jsonBytes)
if err != nil {
fmt.Println(err)
return
}
// Retrieve "time" values
timeValue, err := js.Get("args").GetIndex(0).Get("time").String()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Retrieved time:", timeValue)
}
Ao usar go-simplejson, você pode facilmente percorrer estruturas JSON aninhadas e recuperar valores usando métodos como Get, GetIndex e String.
Para estruturas de dados complexas, você também pode definir seu estrutura de tipo próprio para representar os dados JSON. Por exemplo, você pode criar a seguinte estrutura:
type TimeInfo struct {
Time string
}
type DataStruct struct {
Name string
Args []TimeInfo
}
Para desempacotar seu JSON nesta estrutura, você pode usar o seguinte código:
var dataStruct DataStruct
err = json.Unmarshal(jsonBytes, &dataStruct)
if err != nil {
fmt.Println(err)
return
}
Essa abordagem fornece uma maneira mais estruturada de representar seus dados JSON, facilitando o trabalho e a manutenção.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3