Maison >développement back-end >Golang >Comment désassembler en toute sécurité les chaînes JSON échappées dans Go ?

Comment désassembler en toute sécurité les chaînes JSON échappées dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-31 10:09:10200parcourir

How to Safely Unmarshal Escaped JSON Strings in Go?

Récupération des chaînes JSON pour le démarshaling

Lorsque vous travaillez avec Sockjs et Go, vous pouvez rencontrer des problèmes lors de l'analyse des chaînes JSON envoyées depuis un client JavaScript en raison de s'échapper. Le client JavaScript peut échapper aux chaînes et les envoyer sous forme de []byte, ce qui entraîne des difficultés de démarshaling.

Pour résoudre ce problème, vous pouvez utiliser la fonction strconv.Unquote pour supprimer l'échappement de la chaîne JSON. Cette fonction prend une chaîne comme argument et renvoie une version sans échappement.

Solution :

import (
    "encoding/json"
    "fmt"
    "strconv"
)

// Code goes here.

func main() {
    var msg Msg
    var val []byte = []byte(`"{\"channel\":\"buu\",\"name\":\"john\", \"msg\":\"doe\"}"`)

    s, _ := strconv.Unquote(string(val))

    err := json.Unmarshal([]byte(s), &msg)

    fmt.Println(s)
    fmt.Println(err)
    fmt.Println(msg.Channel, msg.Name, msg.Msg)
}

Sortie :

{"channel":"buu","name":"john","msg":"doe"}
<nil>
buu john doe

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