2017-02-25 3 views
3

Je suis en train de développer un wrapper API Telegram Bot pour Golang (je sais qu'il y en a déjà mais je fais ça pour l'apprentissage). J'ai un struct Réponse:json.Unmarshal ne décode pas dans l'interface interne {} correctement

type Response struct { 
    Ok bool `json:"ok"` 
    ErrorCode int64 `json:"error_code"` 
    Description string `json:"description"` 
    Result interface{} `json:"result"` 
} 

Je ne peux pas connaître le type réel de Result: beaucoup peut être retourné par les serveurs de télégrammes; J'ai fait un struct pour chacun, mais je ne sais pas lequel sera dans Result. Lorsque Unmarshal un JSON à partir d'une réponse HTTP dans la structure Response, tout est chargé correctement, sauf Result.

En fonction où je suis sûr Le résultat sera un User (par exemple), je fais user := resp.Result.(*User), mais je reçois l'erreur suivante lors de l'exécution: panic: interface conversion: interface {} is map[string]interface {}, not *tgbot.User. Donc, Result est un map[string]interface{}. Comment puis-je le transformer en *User?

Merci pour les réponses.

Répondre