"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 posso desempacotar formatos JSON desconhecidos no Go?

Como posso desempacotar formatos JSON desconhecidos no Go?

Publicado em 23/12/2024
Navegar:998

How Can I Unmarshal Unknown JSON Formats in Go?

Desempacotar dados JSON de formato desconhecido

Introdução

Seus dados JSON seguem um formato desconhecido, apresentando um desafio na desempacotamento em uma estrutura GoLang. Este artigo orientará você pelas etapas para lidar com esse cenário de maneira eficaz.

Desempacotar com interface de mapa[string]{}

Como você não conhece as chaves em antecipadamente, você pode usar map[string]interface{} para desempacotar sua carga JSON. Isso permite armazenar os pares de valores-chave como um mapa sem especificar os tipos de valores.

var grades map[string]interface{}

err := json.Unmarshal([]byte(jsonString), &grades)
fmt.Println(err)

fmt.Printf("%#v\n", grades)

Isso gerará os dados JSON como um mapa aninhado de strings para interfaces, o que pode ser útil para inspecionar e processar os dados dinamicamente.

Usando json:"-" Tag

Você pode excluir determinados campos do empacotamento/desempacotamento JSON usando o json:"-" marcação. Isso pode ser útil se você quiser manter alguns dados privados ou evitar referências circulares.

type GradeData struct {
    Grades map[string]interface{} `json:"-"`
}

var gradesData GradeData
err := json.Unmarshal([]byte(jsonString), &gradesData.Grades)
fmt.Println(err)

fmt.Printf("%#v\n", gradesData)

Neste exemplo, o campo Notas não será incluído na representação JSON de gradesData, mas ainda pode ser usado para armazenar e recuperar o JSON data.

Conclusão

Usando map[string]interface{} e a tag json:"-", você pode com sucesso desempacotar dados JSON de formato desconhecido em estruturas GoLang. Essa abordagem permite lidar com estruturas JSON dinâmicas e desconhecidas com elegância.

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