"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 descomponer matrices JSON con tipos de datos mixtos en Go?

¿Cómo descomponer matrices JSON con tipos de datos mixtos en Go?

Publicado el 2024-12-22
Navegar:496

How to Unmarshal JSON Arrays with Mixed Data Types in Go?

Desglosar matrices JSON con tipos de datos mixtos

La tarea de desglosar matrices JSON que contienen valores de diferentes tipos de datos a menudo puede plantear un desafío. Por ejemplo, considere la siguiente matriz JSON:

{["NewYork",123]}

Problema:

En primer lugar, es fundamental tener en cuenta que el JSON proporcionado es sintácticamente incorrecto. Los objetos JSON requieren claves para cada valor, por lo que una representación correcta sería {"key":["NewYork",123]} o simplemente ["NewYork",123].

Además, cuando se trata de JSON matrices compuestas por múltiples tipos de datos, el problema surge cuando las matrices Go necesitan un tipo específico. Esto puede hacer que te preguntes cómo manejar este tipo de situaciones.

Solución:

La clave para abordar este problema es emplear el tipo de interfaz{}. Le permite manejar valores de diversos tipos sin la necesidad de una conversión de tipo explícita. Aquí hay un ejemplo de código que demuestra cómo funciona:

import (
    "encoding/json"
    "fmt"
)

const j = `{"NYC": ["NewYork",123]}`

type UntypedJson map[string][]interface{}

func main() {
    ut := UntypedJson{}
    fmt.Println(json.Unmarshal([]byte(j), &ut))
    fmt.Printf("%#v", ut)
}

En este ejemplo, usamos UntypedJson como un tipo personalizado que asigna cadenas a porciones de interfaz{}. Al utilizar el tipo de interfaz{}, podemos manejar sin esfuerzo tipos de datos mixtos dentro de la matriz JSON.

La salida del programa sería:

<nil>
map[string][]interface{}{"NYC": \["NewYork" 123]}

Conclusión:

Al aprovechar el tipo de interfaz{}, este enfoque le permite descomponer eficazmente matrices JSON con varios tipos de datos.

Ú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