"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 > Vírgulas seguidas em JSON: Por que a sintaxe literal composta de Go \ conflita com o JSON Parsing?

Vírgulas seguidas em JSON: Por que a sintaxe literal composta de Go \ conflita com o JSON Parsing?

Postado em 2025-03-23
Navegar:755

  Trailing Commas in JSON: Why Does Go\'s Composite Literal Syntax Conflict with JSON Parsing?

traseiro Sintaxe Erro na JSON Parsing com Go

Dave Cheney, um especialista de renome em Go, enfatiza o requisito para a direita de vírgulas em declarações literais compostas. No entanto, essa regra parece conflitar com o JSON Parsing. Tipo jsonObject struct { Objetos [] ObjectType `JSON:" Objects "` } TIPO ObjectType struct { Nome String `JSON:" Name "` } func main () { bytes: = [] byte (`{" objetos ": [[ {"Nome": "Foo"}, // Remova a vírgula para fazer o código funcionar! ]} `) jsonType: = & jsonObject {} JSON.UNMARSHAL (BYTES, & JSONTYPE) fmt.printf ("Resultados: %v \ n", jsonype.objects [0] .name) // pânico: erro de tempo de execução: indexado fora do intervalo }

removendo a vírgula à direita resolve o erro de tempo de execução. GO suporta uma correção para essa inconsistência?

// package, imports omitted for brevity

type jsonobject struct {
    Objects []ObjectType `json:"objects"`
}

type ObjectType struct {
    Name string `json:"name"`
}

func main() {
    bytes := []byte(`{ "objects": 
        [ 
            {"name": "foo"}, // REMOVE THE COMMA TO MAKE THE CODE WORK!
        ]}`)
    jsontype := &jsonobject{}
    json.Unmarshal(bytes, &jsontype)
    fmt.Printf("Results: %v\n", jsontype.Objects[0].Name) // panic: runtime error: index out of range
}
Infelizmente, não há solução. A especificação JSON não permite vírgulas à direita. Enquanto a sintaxe vá exige vírgulas à direita em literais compostos, esse requisito não se aplica ao JSON Parsing. [[ {"Nome": "Foo"}, ]]}

apesar do potencial de um analisador JSON específico ignorar a vírgula à direita, essa prática deve ser evitada, pois pode causar erros ao usar outros analisadores JSON válidos.

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