Maison >développement back-end >Golang >Comment désorganiser les chaînes JSON échappées dans Go ?

Comment désorganiser les chaînes JSON échappées dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-27 16:35:09938parcourir

How to Unmarshal Escaped JSON Strings in Go?

Démarshaling des chaînes JSON échappées dans Go

Lors de l'utilisation de SockJS avec Go, l'analyse des données JSON envoyées par un client JavaScript sous forme de tranche d'octets peut être gênante. Le serveur reçoit le JSON échappé, mais tente de l'analyser comme une chaîne ordinaire, ce qui entraîne l'erreur « json : impossible de transformer la chaîne en valeur Go de type main.Msg ».

La solution réside dans l'utilisation de strconv .Unquote fonction avant de tenter de désorganiser le JSON. Cette fonction supprime les caractères d'échappement, vous laissant avec une chaîne qui peut être analysée en une valeur Go.

Voici un exemple modifié :

package main

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

type Msg struct {
    Channel string
    Name string
    Msg string
}

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