"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 personalizar JSON Unmarshaling con String Split en Go?

¿Cómo personalizar JSON Unmarshaling con String Split en Go?

Publicado el 2024-11-01
Navegar:983

How to Customize JSON Unmarshaling with String Split in Go?

Desclasificación personalizada con división de cadenas en Go

Cuando se trata de datos JSON, a menudo surge la necesidad de transformar o personalizar el proceso de separación para objetivos específicos. tipos de datos. En este caso, queremos dividir una cadena JSON que contiene valores separados por comas en un segmento de cadena [] durante la desclasificación.

Para lograr esto, implementemos un desclasificador personalizado para el tipo de cadena []:

type strslice []string

func (ss *strslice) UnmarshalJSON(data []byte) error {
    var s string
    if err := json.Unmarshal(data, &s); err != nil {
        return err
    }
    *ss = strings.Split(s, "-")
    return nil
}

Este desclasificador personalizado toma los datos JSON sin procesar como entrada y los convierte en una porción de cadenas dividiéndolas en el delimitador especificado ("-" en este caso).

En nuestro original estructura, ahora podemos usar este tipo personalizado para el campo Materias:

type Student struct {
    StudentNumber int      `json:"student_number"`
    Name          string   `json:"name"`
    Subjects      strslice `json:"subjects"`
}

Esto nos permite descomponer los datos JSON directamente en la estructura, con el campo Asuntos dividido automáticamente en cadenas individuales:

json := `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`
var s Student
if err := json.Unmarshal([]byte(json), &s); err != nil {
    panic(err)
}
fmt.Println(s) // Output: {1234567 John Doe [Chemistry Maths History Geography]}
Ú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