Maison > développement back-end > Golang > Comment gérer avec élégance les réponses JSON avec différents formats ?

Comment gérer avec élégance les réponses JSON avec différents formats ?

Barbara Streisand
Libérer: 2024-10-27 10:42:03
original
819 Les gens l'ont consulté

How to Elegantly Handle JSON Responses with Varying Formats?

Exploration des approches pour gérer les réponses JSON avec des formats variables

Dans le scénario où un point de terminaison consommé renvoie JSON dans divers formats, il est crucial de trouver une approche élégante pour gérer ces variations . Le dilemme survient en raison de la nature immuable du point de terminaison.

Une stratégie courante consiste à utiliser plusieurs structures pour le décodage, à tenter de décoder en une structure attendant une chaîne et à passer à une structure alternative avec un tableau en cas d'erreur. Bien que cette méthode atteigne la fonctionnalité souhaitée, il peut exister une approche plus raffinée.

Utilisation des assertions de type et des commutateurs de type

Une solution recommandée consiste à désorganiser le JSON en une valeur d'interface{}. Cette valeur peut ensuite être examinée à l'aide d'assertions de type ou de commutateurs de type pour déterminer son type réel.

Un exemple dans Go démontre l'efficacité de cette approche :

<code class="go">type Response struct {
    Message interface{} `json:"message"`
}

func main() {
    inputs := []string{
        `{"message":"Message"}`,
        `{"message":["ERROR_CODE"]}`,
    }

    for _, input := range inputs {
        var r Response
        if err := json.Unmarshal([]byte(input), &r); err != nil {
            panic(err)
        }
        switch x := r.Message.(type) {
        case string:
            fmt.Println("Success, message:", x)
        case []interface{}:
            fmt.Println("Error, code:", x)
        default:
            fmt.Println("Something else:", x)
        }
    }
}</code>
Copier après la connexion

Le résultat présente la gestion réussie et distinction des formats de réponse JSON :

Success, message: Message
Error, code: [ERROR_CODE]
Copier après la connexion

En tirant parti de cette approche, vous pouvez gérer facilement différents formats JSON, éliminant ainsi le besoin de plusieurs structures ou de gestion des erreurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal