Dans Golang, json est un format d'échange de données couramment utilisé, qui peut facilement sérialiser des données structurées au format json, et peut également désérialiser au type de données d'origine à partir des données au format json. Lors du processus d'utilisation de json, vous devez parfois échapper certains caractères spéciaux pour éviter les erreurs dans la chaîne json. Alors, comment échapper aux caractères json dans Golang ? Cet article vous le présentera en détail.
json in golang
In golang, vous pouvez utiliser le package encoding/json pour traiter les données json. Ce package fournit les fonctions Marshal et Unmarshal, qui peuvent convertir n'importe quel type de données en golang en une chaîne au format json et reconvertir une chaîne au format json en type de données d'origine dans golang. Voici un exemple simple :
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { p := Person{ Name: "Tom", Age: 20, } data, _ := json.Marshal(p) fmt.Println(string(data)) var newPerson Person json.Unmarshal(data, &newPerson) fmt.Println(newPerson) }
Le résultat de sortie est :
{"name":"Tom","age":20} {Tom 20}
Vous pouvez le voir en sérialisant l'instance de structure Person dans une chaîne au format json, puis en désérialisant et la restauration dans une nouvelle instance Person réalise le processus de conversion du type de données golang au format json, puis de reconversion au type de données golang dans la direction opposée.
Caractères d'échappement dans la chaîne json
Dans la chaîne json, certains caractères doivent être échappés, sinon cela provoquera des erreurs de syntaxe. Les caractères d'échappement courants incluent :
Caractère d'évasion | Signification |
---|---|
barre oblique | |
# 🎜🎜#Backspace# 🎜🎜# | f |
n#🎜 🎜##🎜 🎜# Saut de ligne | |
r | Enter |
t | # 🎜🎜#Caractère de tabulation horizontale |
Si vous n'utilisez pas de caractères d'échappement dans la chaîne json, mais remplacez directement le double Lorsque les caractères spéciaux tels que les guillemets sont écrits dans la chaîne, l'erreur suivante se produira : | {"name": "Tom", "introduction": "I'm a "programmer""} Copier après la connexion | Dans la chaîne json ci-dessus, le guillemet double n'utilise pas de caractère d'échappement après le dernier mot "programmeur". L'encodeur json ne peut pas reconnaître correctement cette chaîne. Cette erreur peut être traitée comme suit :
Traitement des caractères d'échappement json | Dans Golang, vous pouvez utiliser json.Marshal pour le traitement des caractères d'échappement json. Cette fonction échappera à tous les caractères requis, y compris les caractères d'échappement de base et les points de code Unicode. |
type Person struct { Name string `json:"name"` Gender string `json:"gender"` } Copier après la connexion | dans la chaîne au format json suivante : {"name":"Tom","gender":"He said, "I'm the best!""} Copier après la connexion Copier après la connexion | , vous pouvez utiliser le Code suivant :
{"name":"Tom","gender":"He said, "I'm the best!""}
Vous pouvez voir que lorsque vous utilisez la fonction json.Marshal pour sérialiser l'instance p dans une chaîne au format json, doublez les guillemets sont automatiquement ajoutés en tant que ", évitant ainsi les erreurs de l'encodeur json.
En plus des caractères d'échappement courants, la fonction json.Marshal fournie par golang peut également gérer les caractères de contrôle et les caractères multi-octets. Nous vous peut traiter les caractères qui doivent être échappés avant de sérialiser les données de structure dans une chaîne au format json :
p := Person{ Name: "Tom", Gender: `He said, "I'm the best!"`, } // 处理多字节字符 p.Gender = strings.Replace(p.Gender, "!", "\uff01", -1) // 处理控制字符 p.Gender = strings.Replace(p.Gender, "", "\u0001", -1) data, _ := json.Marshal(p) fmt.Println(string(data))
Dans le code ci-dessus, utilisez d'abord des chaînes. Remplacez dans la fonction de bibliothèque standard de Golang, remplacez le multi- caractères d'octets dans la chaîne avec les points de code UTF-8 correspondants, puis utilisez la même méthode pour remplacer les caractères de contrôle dans la chaîne. Enfin, utilisez json.Marshal pour sérialiser l'instance p au format json. :
{"name":"Tom","gender":"He said, "I'm the best!\uff01""}
Vous pouvez voir que dans la chaîne json, nous avons échappé les caractères qui doivent être échappés dans les caractères d'échappement correspondants, afin de les éviter Erreur de l'encodeur json
.Résumé
Dans Golang, vous pouvez utiliser la fonction json.Marshal pour convertir facilement les données de structure en une chaîne au format json et échapper automatiquement les caractères qui doivent être échappés. Cela peut éviter des erreurs dans. la chaîne json et garantir l'exactitude des données json, d'autres méthodes doivent être utilisées pour traiter les caractères multi-octets et les caractères de contrôle
.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!