Al trabajar con respuestas JSON en Go, acceder a elementos dentro de matrices anidadas puede plantear desafíos. A menudo, surgen errores como "la interfaz de tipo {} no admite la indexación" al intentar recuperar puntos de datos específicos.
Para resolver esto, es fundamental comprender la naturaleza subyacente de las respuestas JSON en Go. De forma predeterminada, las matrices se representan como sectores de []interfaz{}, mientras que los diccionarios se convierten como mapas de mapa[cadena]interfaz{}. En consecuencia, las variables de la interfaz carecen de soporte para la indexación.
Para acceder a elementos anidados, las afirmaciones de tipo se vuelven necesarias. Un enfoque es hacer lo siguiente sin comprobar errores:
objects := result["objects"].([]interface{})
first := objects[0].(map[string]interface{})
fmt.Println(first["ITEM_ID"])
Sin embargo, este método puede provocar pánico si los tipos no se alinean. Un enfoque más sólido es utilizar el formulario de dos retornos y manejar errores potenciales:
objects, ok := result["objects"].([]interface{})
if !ok {
// Handle error
}
Si su JSON sigue una estructura consistente, considere decodificarlo directamente en un tipo personalizado:
type Result struct {
Query string `json:"query"`
Count int `json:"count"`
Objects []struct {
ItemId string `json:"ITEM_ID"`
ProdClassId string `json:"PROD_CLASS_ID"`
Available int `json:"AVAILABLE"`
} `json:"objects"`
}
Una vez decodificado, puede acceder sin problemas a elementos anidados como result.Objects[0].ItemId.
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