Desempacotando matrizes JSON com tipos de dados mistos
A tarefa de desempacotar matrizes JSON contendo valores de diferentes tipos de dados muitas vezes pode representar um desafio. Por exemplo, considere a seguinte matriz JSON:
{["NewYork",123]}
Problema:
Em primeiro lugar, é crucial observar que o JSON fornecido está sintaticamente incorreto. Objetos JSON exigem chaves para cada valor, portanto, uma representação correta seria {"key":["NewYork",123]} ou simplesmente ["NewYork",123].
Além disso, ao lidar com JSON matrizes compostas por vários tipos de dados, o problema surge quando as matrizes Go precisam de um tipo especificado. Isso pode deixar você se perguntando como lidar com essas situações.
Solução:
A chave para resolver esse problema é empregar a interface de tipo{}. Ele permite lidar com valores de tipos variados sem a necessidade de conversão explícita de tipo. Aqui está um exemplo de código que demonstra como funciona:
import ( "encoding/json" "fmt" ) const j = `{"NYC": ["NewYork",123]}` type UntypedJson map[string][]interface{} func main() { ut := UntypedJson{} fmt.Println(json.Unmarshal([]byte(j), &ut)) fmt.Printf("%#v", ut) }
Neste exemplo, usamos UntypedJson como um tipo personalizado que mapeia strings para fatias da interface{}. Ao utilizar o tipo de interface{}, podemos lidar facilmente com tipos de dados mistos dentro da matriz JSON.
A saída do programa seria:
<nil> map[string][]interface{}{"NYC": \["NewYork" 123]}
Conclusão:
Aproveitando o tipo de interface{}, essa abordagem permite desempacotar matrizes JSON de maneira eficaz com vários tipos de dados.
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