"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 faço para acessar dados JSON aninhados em Golang e resolver o erro "type interface {} does not support indexing"?

Como faço para acessar dados JSON aninhados em Golang e resolver o erro "type interface {} does not support indexing"?

Publicado em 2024-11-10
Navegar:360

How do I access nested JSON data in Golang and resolve the \

Acessando dados JSON aninhados em Golang: Resolvendo o erro "type interface {} não suporta indexação"

Ao trabalhar com respostas JSON aninhadas em Golang, é essencial lidar corretamente com os tipos de dados. Se você encontrar o erro "operação inválida: d["dados"] (tipo interface {} não suporta indexação)", isso geralmente ocorre porque você está tentando indexar uma variável de interface{} diretamente.

Para Para resolver esse problema, será necessário executar outra asserção de tipo para especificar o tipo de dados correto. Vamos mergulhar na solução:

Asserção de tipo para um mapa intermediário

A variável d é do tipo interface{}, que é um tipo dinâmico em Golang. Você precisa digitar assert para um tipo específico para acessar seus campos. Nesse caso, sabemos que a resposta possui um campo “dados” que contém um mapa de strings para interfaces. Portanto, você pode adicionar outra asserção de tipo para converter d em map[string]interface{} antes da indexação:

test := d.(map[string]interface{})["data"].(map[string]interface{})["type"]

Agora, o teste manterá o valor do campo "type" no mapa de dados aninhado.

Opcional Digite Assertion em d

Se você declarar d como um mapa[string]interface{} desde o início, poderá pular a primeira asserção de tipo:

var d map[string]interface{}
...
test := d["data"].(map[string]interface{})["type"]

Isso converterá d diretamente para o tipo de mapa correto, eliminando a necessidade de asserção de tipo intermediário.

Conclusão

Ao compreender os tipos de dados e executar as asserções de tipo apropriadas, você pode acessar e trabalhar com respostas JSON aninhadas em Golang sem encontrar erros de indexação. Lembre-se de que a interface do Go{} é versátil, mas pode exigir processamento adicional para acessar tipos específicos.

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