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.
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