"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 acessar com segurança matrizes JSON aninhadas no Go?

Como acessar com segurança matrizes JSON aninhadas no Go?

Publicado em 2024-11-09
Navegar:953

How to Safely Access Nested JSON Arrays in Go?

Decifrando problemas de acesso ao array JSON no Go

Ao trabalhar com respostas JSON no Go, acessar elementos dentro de arrays aninhados pode representar desafios. Muitas vezes, surgem erros como "o tipo de interface {} não suporta indexação" ao tentar recuperar pontos de dados específicos.

Para resolver isso, é crucial compreender a natureza subjacente das respostas JSON em Go. Por padrão, as matrizes são representadas como fatias de []interface{}, enquanto os dicionários são convertidos como mapas map[string]interface{}. Conseqüentemente, as variáveis ​​de interface não têm suporte para indexação.

Para acessar elementos aninhados, asserções de tipo tornam-se necessárias. Uma abordagem é fazer o seguinte sem verificação de erros:

objects := result["objects"].([]interface{})
first := objects[0].(map[string]interface{})
fmt.Println(first["ITEM_ID"])

No entanto, esse método pode levar ao pânico se os tipos não se alinharem. Uma abordagem mais robusta é usar o formulário de dois retornos e lidar com possíveis erros:

objects, ok := result["objects"].([]interface{})
if !ok {
    // Handle error
}

Se seu JSON seguir uma estrutura consistente, considere decodificar diretamente em um tipo personalizado:

type Result struct {
    Query   string `json:"query"`
    Count   int    `json:"count"`
    Objects []struct {
        ItemId      string `json:"ITEM_ID"`
        ProdClassId string `json:"PROD_CLASS_ID"`
        Available   int    `json:"AVAILABLE"`
    } `json:"objects"`
}

Uma vez decodificado, você pode acessar facilmente elementos aninhados como result.Objects[0].ItemId.

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