"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como acessar chaves e valores JSON profundamente aninhados no Go?

Como acessar chaves e valores JSON profundamente aninhados no Go?

Publicado em 2024-11-08
Navegar:729

How to Access Deeply Nested JSON Keys and Values in Go?

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.

Tutorial mais recente Mais>

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