implementação unmarshaljson para escalares derivados em go
Problem:
um tipo personalizado que converte subtigelas constantes para strings e vice Isso é desafiador porque o Unarshaljson não fornece uma maneira de modificar o valor escalar sem usar uma estrutura. Método un -shaljson para modificar o valor do receptor.
uNarshal para uma string:
uncarshal o texto json em uma string simples, removendo todo o JSON Quoting.
Exemplo de código:
pacote main
importação (
"Encoding/JSON"
"FMT"
)
Digite PersonId Int
const (
Bob Personid = iota
Jane
Ralph
Ninguém = -1
)
var nameMap = map [string] PersonId {
"Bob": Bob,
"Jane": Jane,
"Ralph": Ralph,
"Ninguém": ninguém,
}
var idmap = map [personid] string {
Bob: "Bob",
Jane: "Jane",
Ralph: "Ralph",
Ninguém: "ninguém",
}
func (intvalue PersonId) name () string {
Retornar idmap [intvalue]
}
Func Lookup (Name String) Personid {
Retornar NameMap [nome]
}
func (intvalue *PersonId) UNARSHALJSON (Data [] byte) Erro {
var s string
se err: = json.unmarshal (dados, & s); err! = nil {
retornar err
}
*intvalue = pesquisa (s)
retornar nil
}
Digite mytype struct {
Person PersonId `JSON:" Pessoa "`
Conde int `JSON:" Count "`
String de cumprimento `JSON:" saudação "`
}
func main () {
var m MyType
se err: = json.unmarshal ([] byte (`{" pessoa ":" ralph "," count ": 4," saudação ":" hello "}`), & m); err! = nil {
fmt.println (err)
} outro {
para i: = 0; I
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