"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 puedo diferenciar entre los campos vacíos y no especificados cuando desampara a JSON en Go?

¿Cómo puedo diferenciar entre los campos vacíos y no especificados cuando desampara a JSON en Go?

Publicado el 2025-03-23
Navegar:905

How Can I Differentiate Between Void and Unspecified Fields When Unmarshaling JSON in Go?

reconociendo campos sin especificaciones y no especificados durante JSON unmarShaling en go

en JSON, puede ser desafiante para diferenciar entre los valores voides y los campos no especificados cuando la descarga de los datos de GO en GO. Json:

[ {"Nombre": "A", "Descripción": "Monotremata"}, {"Nombre": "B"}, {"Nombre": "C", "Descripción": ""} ]

[
  {"Name": "A", "Description": "Monotremata"},
  {"Name": "B"},
  {"Name": "C", "Description": ""}
]

type Category struct { Cadena de nombre Cadena de descripción }

type Category struct {
  Name        string
  Description string
}

[{nombre: una descripción: monotremata} {nombre: b Descripción:} {nombre: c Descripción:}]

[{Name:A Description:Monotremata} {Name:B Description:} {Name:C Description:}]

para diferenciar entre estos casos, un enfoque es usar punteros para campos opcionales. Al cambiar el tipo de descripción a un puntero, podemos distinguir entre un valor de cadena vacío y un valor nil (indicando un campo no especificado):

Tipo de categoría Struct { Cadena de nombre Descripción *cadena }

type Category struct {
  Name        string
  Description *string
}

[{nombre: una descripción: 0x1050c150} {nombre: b Descripción: } {nombre: c Descripción: 0x1050c158}]

[{Name:A Description:0x1050c150} {Name:B Description:} {Name:C Description:0x1050c158}]
Ú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