Acceso a datos JSON anidados en Golang: resolución del error "type interface {} no admite indexación"
Al trabajar con respuestas JSON anidadas en Golang, es esencial manejar los tipos de datos correctamente. Si encuentra el error "operación no válida: d["datos"] (la interfaz de tipo {} no admite la indexación)", normalmente ocurre porque está intentando indexar una variable de interfaz{} directamente.
Para Para resolver este problema, debe realizar otra afirmación de tipo para especificar el tipo de datos correcto. Profundicemos en la solución:
Escriba aserción en un mapa intermedio
La variable d es de tipo interfaz{}, que es un tipo dinámico en Golang. Debe escribir aseverarlo en un tipo específico para acceder a sus campos. En este caso, sabemos que la respuesta tiene un campo de "datos" que contiene un mapa de cadenas a interfaces. Por lo tanto, puede agregar otro tipo de aserción para convertir d a map[string]interface{} antes de la indexación:
test := d.(map[string]interface{})["data"].(map[string]interface{})["type"]
Ahora, la prueba contendrá el valor del campo "type" dentro del mapa de datos anidados.
Opcional Escriba Aserción en d
Si declara d como una interfaz de mapa[string]{} desde el principio, puede omitir la primera aserción de tipo:
var d map[string]interface{}
...
test := d["data"].(map[string]interface{})["type"]
Esto convertirá d directamente al tipo de mapa correcto, eliminando la necesidad de la aserción de tipo intermedio.
Conclusión
Al comprender los tipos de datos y realizar las aserciones de tipo apropiadas, puede acceder y trabajar con respuestas JSON anidadas en Golang sin encontrar errores de indexación. Recuerde, la interfaz de Go{} es versátil pero puede requerir procesamiento adicional para acceder a tipos específicos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3