"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso diferenciar os campos vazios e não especificados ao soltar json em Go?

Como posso diferenciar os campos vazios e não especificados ao soltar json em Go?

Postado em 2025-03-23
Navegar:649

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

Recognizing Void and Unspecified Fields during JSON Unmarshaling in Go

In JSON, it can be challenging to differentiate between void values ​​and unspecified fields when unmarshaling data into Go structures.

For example, consider the following JSON:

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

e uncarshal o json em uma fatia de instâncias de categoria, obtemos a seguinte saída:

type Category struct {
  Name        string
  Description string
}

aviso que a notificação de belics the Field: BIONST: {Nome: C. Nos dois casos, o campo Descrição é definido como uma string vazia na representação Go. Ao alterar o tipo de descrição para um ponteiro, podemos distinguir entre um valor de string vazio e um valor nulo (indicando um campo não especificado):

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

Quando solucionamos o JSON nessa estrutura modificada, obtemos a seguinte saída:

[{nome: a descrição: 0x1050c150} {name: b Descrição: } {name: c Description: 0x10c1588} Descrição Campo de C é um ponteiro para uma string vazia (indicada pelo endereço de memória hexadecimal). Isso nos permite identificar campos não especificados e lidar com eles de acordo em nosso programa.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3