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
Barbara Streisandoriginal
2024-10-27 10:42:03820parcourir

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>

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

Success, message: Message
Error, code: [ERROR_CODE]

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!

Déclaration:
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