"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 desempacotar números inteiros codificados em string no Go?

Como desempacotar números inteiros codificados em string no Go?

Publicado em 2024-11-12
Navegar:688

How to Unmarshal String-encoded Integers in Go?

Desempacotando números inteiros codificados em string em Go

Ao tentar desempacotar JSON com valores de string em um campo inteiro, pode-se encontrar o erro: "json: não é possível desempacotar a string no valor Go do tipo int64." Isso ocorre porque o desempacotamento JSON por padrão assume que tipos numéricos, como int64, devem conter caracteres numéricos.

Problema:
Uma estrutura Go que define um campo int64 está recebendo JSON com o correspondente campo codificado como uma string. Essa incompatibilidade nos tipos de dados faz com que o processo de desempacotamento falhe.

Solução:
A solução recomendada é usar a tag ",string" na tag json struct para o campo inteiro . Isso instrui o processo de desempacotamento a aceitar valores do tipo string:

type tySurvey struct {
   Id   int64  `json:"id,string,omitempty"`
   Name string `json:"name,omitempty"`
}

Implementação:
Com a estrutura modificada, os dados JSON com um campo de id codificado como uma string agora podem ser desempacotados com sucesso em um objeto Go do tipo tySurvey.

Nota:
É importante lembrar que especificar omitempty na tag não permitirá que a string vazia seja decodificada. omitempty é usado exclusivamente para fins de codificação.

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