"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 acceder de forma segura a matrices JSON anidadas en Go?

¿Cómo acceder de forma segura a matrices JSON anidadas en Go?

Publicado el 2024-11-09
Navegar:183

How to Safely Access Nested JSON Arrays in Go?

Descifrar problemas de acceso a matrices JSON en Go

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.

Ú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