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]}
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