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.
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