"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo accedo a datos JSON anidados en Golang y resuelvo el error \"tipo interfaz {} no admite indexación\"?

¿Cómo accedo a datos JSON anidados en Golang y resuelvo el error \"tipo interfaz {} no admite indexación\"?

Publicado el 2024-11-10
Navegar:638

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

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.

Último tutorial Más>

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