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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-12-22 16:29:10736parcourir

How to Unmarshall Escaped JSON Strings in Go with SockJS?

Désorganisation des chaînes JSON échappées

Lors de l'utilisation de Sockjs avec Go, on peut rencontrer des défis lorsque les clients JavaScript transmettent des données JSON sous forme de chaînes d'échappement. Cela peut conduire à des erreurs d'analyse telles que "json : impossible de transformer la chaîne en valeur Go de type main.Msg."

Solution

Pour contourner ce problème, pré-traitez la chaîne JSON à l'aide de strconv. Fin de citation. Voici comment cela fonctionne :

package main

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

type Msg struct {
    Channel string
    Name   string
    Msg     string
}

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

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

    // Unmarshal the unquoted JSON string
    err := json.Unmarshal([]byte(s), &msg)

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

Dans cet exemple, nous utilisons strconv.Unquote pour supprimer les caractères d'échappement de la chaîne JSON. Une fois non cité, nous procédons à sa désorganisation dans la structure Msg. Cette approche résout l'erreur d'analyse et nous permet d'accéder correctement aux données.

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