"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 converter strings UTF-8 em [] byte para JSON Unmarshalling em Go?

Como converter strings UTF-8 em [] byte para JSON Unmarshalling em Go?

Publicado em 2024-11-08
Navegar:903

How to Convert UTF-8 Strings to []byte for JSON Unmarshalling in Go?

Desempacotando strings UTF-8 para []byte

Ao trabalhar com JSON, a função de desempacotamento requer uma entrada do tipo []byte. No entanto, nossos dados podem ser armazenados como uma string UTF-8. Este artigo explora como converter uma string UTF-8 em []byte para desempacotamento bem-sucedido.

Conversão usando []byte(s)

De acordo com a especificação Go , uma string pode ser convertida em []byte usando uma conversão simples:

s := "some text"
b := []byte(s)

No entanto, esta conversão cria uma cópia do conteúdo da string, o que pode ser ineficiente para strings grandes.

Usando io.Reader for Efficient Unmarshal

Uma abordagem alternativa é usar um io.Reader criado a partir da string:

s := `{"somekey":"somevalue"}`
reader := strings.NewReader(s)
decoder := json.NewDecoder(reader)
var result interface{}
decoder.Decode(&result)

Este método evita a cópia da string e é mais eficiente para entradas grandes.

Considerações para diferentes cenários

  • Para textos JSON pequenos, a conversão direta para []byte usando []byte(s) é aceitável.
  • Para textos JSON grandes ou ao trabalhar com io.Readers, usar strings.NewReader e json.NewDecoder fornece melhor eficiência.

Em resumo, a conversão de strings UTF-8 em []byte para desempacotamento envolve conversão direta ou uso de um io.Reader para manipulação eficiente de entradas grandes. A escolha depende dos requisitos específicos da aplicaçã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