Maison Tutoriel système Linux Sérialisation et désérialisation des données json

Sérialisation et désérialisation des données json

Jan 09, 2024 am 11:30 AM
linux Chapeau rouge

Présentation Le nom complet de json est la notation d'objet Javascript, et le nom chinois complet est : notation d'objet js. Parmi les protocoles de sérialisation et de désérialisation, on trouve : json, xml, yaml, protocol buffer, etc. Parmi eux, json est la principale forme de transmission des données contractuelles des API front-end et back-end. json prend en charge quatre types de données : valeurs numériques, valeurs booléennes, tableaux et objets. Avec ces quatre types de données, des modèles de données complexes peuvent être construits.

En langage Go, nous pouvons utiliser la bibliothèque standard json pour implémenter la sérialisation et la désérialisation des données. Cette bibliothèque fournit des méthodes pratiques pour sérialiser et désérialiser des cartes, des structures, des tableaux, des tranches et des types de données primitifs intégrés. En utilisant la bibliothèque standard json, nous pouvons facilement convertir les données au format json et les analyser au type de données d'origine si nécessaire. Cela nous offre une grande commodité dans le traitement des données.

Ici, je vais donner trois exemples pour illustrer l'utilisation de json. Pour les débutants, vous pouvez souvent utiliser un seul objet de structure pour recevoir et envoyer des données. Jetons un coup d'œil aux exemples spécifiques ci-dessous. 1. Utilisez un objet structure pour recevoir des données : ``` tapez Structure de personne { Chaîne de nom `json:"name"` Âge int `json :"âge"` } fonction main() { data := `{"nom": "Alice", "âge": 25}` var p Personne err := json.Unmarshal([]byte(data), &p) si erreur != nul { fmt.Println("Échec de l'analyse de json :", euh) retour

Sérialisation et désérialisation des données json

Structure

type Personne struct {<br> Chaîne de nom `json:"name"`<br> Âge int `json:"âge"`<br> }
<br> func main() {<br> var (<br> nouveauPar personne<br> bts []octet<br> )<br> par:=Personne{<br> Nom : "Lily",<br> Âge : 29,<br> }<br> // Sérialisation<br> si bts, err = json.Marshal(per); err !=nil{<br> log.Fatal(err.Error())<br> retour<br> }
<br> if err = json.Unmarshal(bts, &newPer); err !=nil{<br> log.Fatal(err.Error())<br> retour<br> }<br> fmt.Println(newPer)<br> }

carte

func main() {<br> var (<br> smap = map[string]int{<br> "Âge": 28,<br> "Sexe": 1,<br> "Étage": 12,<br> }<br> newSmap = make(map[string]int)<br> bts []octet<br> )<br> si bts, err = json.Marshal(smap); err !=nil {<br> log.Fatal(err.Error())<br> retour<br> }<br> if err = json.Umarshal(bts, &newSmap); err !=nil {<br> log.Fatal(err.Error())<br> retour<br> }<br> fmt.Println(newSmap)<br> }

Tableau ou tableau dynamique en tranches

func main() {<br> var (<br> âges []int = []int{23, 20, 28, 25, 30}<br> bts []octet<br> euh erreur<br> newAges = make([]int, len(ages))<br> )<br> si bts, err = json.Marshal(ages); err != nil {<br> fmt.Println(err.Error())<br> retour<br> }<br> if err = json.Unmarshal(bts, &newAges); err != nil {<br> fmt.Println(err.Error())<br> retour<br> }<br> fmt.Println("nouveaux âges : ", nouveauxÂges)<br> retour<br> }
Les débutants sont relativement clairs sur la sérialisation JSON et la désérialisation des structures, mais ils peuvent rarement ou jamais utiliser les deux dernières.

  • Pour les données de type tableau, certains frontaux les utiliseront dans des scénarios commerciaux.
  • Pour le type de carte, généralement lorsque l'interface REST tierce est appelée sur le serveur de langage Go, le serveur souhaite uniquement que le code retour spécifié détermine si l'appel réussit. Le programmeur ne voulait pas écrire la définition globale de la structure struct, ou peut-être était-il paresseux, alors il a utilisé une map[string]interface{} pour recevoir les données de retour. À ce stade, après la désérialisation via Unmarshal dans la bibliothèque standard json, le code de retour est obtenu via map["err_code"].(int), puis une autre logique de traitement ultérieure est effectuée.

Ici, je souhaite également expliquer les fonctionnalités que j'utilise parfois lors de l'utilisation d'une structure. La fonctionnalité de valeur de balise est omitempty supportée par le json de la structure, par exemple :
type Personne struct {<br> Chaîne de nom `json:"name,omitempty"`<br> Âge int `json:"âge"`<br> }<br> Cela signifie que lorsque la valeur de la balise de la fonction omitempty est définie, si la valeur de l'élément de données de la structure correspondante est nulle, elle ne sera pas sortie. C'est-à-dire que si un élément des données de structure renvoyées par le serveur est vide et que cet élément n'est pas renvoyé au front-end, vous pouvez utiliser l'attribut json tag value d'omitempty.

Nous vous proposons ici une bibliothèque d'analyse json écrite par Taowen, un ingénieur senior de Didi Company, qui est la plus rapide au monde. Adresse github : jsoniter.

L'article est réimprimé de la communauté Open Source Chine [http://www.oschina.net]

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 de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Où est l'interpréteur PyCharm? Où est l'interpréteur PyCharm? May 23, 2025 pm 10:09 PM

La définition de l'emplacement de l'interprète dans PyCharm peut être réalisée via les étapes suivantes: 1. Ouvrez PyCharm, cliquez sur le menu "Fichier" et sélectionnez "Paramètres" ou "Préférences". 2. Recherchez et cliquez sur "Projet: [Nom de votre projet]" et sélectionnez "PythonInterpreter". 3. Cliquez sur "addterpreter", sélectionnez "SystemInterpreter", accédez au répertoire d'installation Python, sélectionnez le fichier exécutable Python, puis cliquez sur "OK". Lors de la configuration de l'interprète, vous devez prêter attention à l'exactitude du chemin, à la compatibilité des versions et à l'utilisation de l'environnement virtuel pour assurer le fonctionnement fluide du projet.

Expérience dans la participation aux activités d'échange de technologie hors ligne VSCODE Expérience dans la participation aux activités d'échange de technologie hors ligne VSCODE May 29, 2025 pm 10:00 PM

J'ai beaucoup d'expérience dans la participation aux activités d'échange de technologie hors ligne VSCODE, et mes principaux gains comprennent le partage du développement plug-in, des démonstrations pratiques et une communication avec d'autres développeurs. 1. Partage du développement plug-in: J'ai appris à utiliser l'API plug-in de VScode pour améliorer l'efficacité de développement, telles que la mise en forme automatique et les plug-ins d'analyse statique. 2. Démonstration pratique: j'ai appris à utiliser VScode pour le développement à distance et j'ai réalisé sa flexibilité et son évolutivité. 3. Communiquez avec les développeurs: j'ai obtenu des compétences pour optimiser la vitesse de démarrage VSCODE, telles que la réduction du nombre de plug-ins chargés au démarrage et la gestion de l'ordre de chargement du plug-in. En bref, cet événement m'a beaucoup profité et je recommande vivement ceux qui sont intéressés par VSCODE de participer.

Tutoriel d'installation de MySQL vous apprenez étape par étape les étapes détaillées pour l'installation et la configuration de MySQL étape par étape Tutoriel d'installation de MySQL vous apprenez étape par étape les étapes détaillées pour l'installation et la configuration de MySQL étape par étape May 23, 2025 am 06:09 AM

L'installation et la configuration de MySQL peuvent être terminées via les étapes suivantes: 1. Téléchargez le package d'installation adapté au système d'exploitation à partir du site officiel. 2. Exécutez l'installateur, sélectionnez l'option "Default Default" et définissez le mot de passe de l'utilisateur racine. 3. Après l'installation, configurez les variables d'environnement pour vous assurer que le répertoire bac de MySQL est dans le chemin du chemin. 4. Lors de la création d'un utilisateur, suivez le principe des autorisations minimales et définissez un mot de passe fort. 5. Ajustez les paramètres Innodb_Buffer_Pool_Size et Max_Connections lors de l'optimisation des performances. 6. Sauvegarder régulièrement la base de données et optimiser les instructions de requête pour améliorer les performances.

Comment limiter les ressources des utilisateurs dans Linux? Comment configurer Ulimit? Comment limiter les ressources des utilisateurs dans Linux? Comment configurer Ulimit? May 29, 2025 pm 11:09 PM

Linux System restreint les ressources utilisateur via la commande UliMIT pour éviter une utilisation excessive des ressources. 1.Ulimit est une commande shell intégrée qui peut limiter le nombre de descripteurs de fichiers (-n), la taille de la mémoire (-v), le nombre de threads (-u), etc., qui sont divisés en limite douce (valeur effective actuelle) et limite dure (limite supérieure maximale). 2. Utilisez directement la commande ulimit pour une modification temporaire, telle que Ulimit-N2048, mais elle n'est valable que pour la session en cours. 3. Pour un effet permanent, vous devez modifier /etc/security/limits.conf et les fichiers de configuration PAM, et ajouter SessionRequiredPam_limits.so. 4. Le service SystemD doit définir Lim dans le fichier unitaire

Comparaison entre Informrix et MySQL sur Linux Comparaison entre Informrix et MySQL sur Linux May 29, 2025 pm 11:21 PM

Informrix et MySQL sont tous deux des systèmes de gestion de base de données relationnels populaires. Ils fonctionnent bien dans les environnements Linux et sont largement utilisés. Ce qui suit est une comparaison et une analyse des deux sur la plate-forme Linux: Installation et configurer Informrix: le déploiement d'informations sur Linux nécessite le téléchargement des fichiers d'installation correspondants, puis la réalisation du processus d'installation et de configuration en fonction de la documentation officielle. MySQL: Le processus d'installation de MySQL est relativement simple et peut être facilement installé via des outils de gestion des packages système (tels que APT ou YUM), et il existe un grand nombre de didacticiels et une prise en charge de la communauté sur le réseau pour référence. Performance Informrix: Informrix a d'excellentes performances et

Comment intégrer Filebeat et Elasticsearch sous Debian Comment intégrer Filebeat et Elasticsearch sous Debian May 28, 2025 pm 05:09 PM

Dans le système d'exploitation Debian, l'intégration de Filebeat et Elasticsearch peut simplifier la collecte, la transmission et le stockage des données de journal. Voici les étapes de mise en œuvre spécifiques: Étape 1: La première tâche de déploiement d'Elasticsearch est de terminer l'installation d'Elasticsearch dans le système Debian. Vous pouvez télécharger la version correspondante du progiciel Elasticsearch à partir du site officiel élastique et terminer le processus d'installation selon les directives officielles. Téléchargez et installez elasticsearchwgethttps: //artifacts.elastic.co/downloads/elasticse

Les raisons et les solutions pour l'éditeur crash après la mise à jour du plug-in VScode Les raisons et les solutions pour l'éditeur crash après la mise à jour du plug-in VScode May 29, 2025 pm 10:03 PM

La raison pour laquelle l'éditeur se bloque après la mise à jour du plugin VScode est qu'il existe des problèmes de compatibilité avec le plugin avec les versions existantes de VScode ou d'autres plugins. Les solutions incluent: 1. Désactiver le plug-in pour résoudre les problèmes un par un; 2. Détrracez le plug-in Problem vers la version précédente; 3. Trouvez d'autres plug-ins; 4. Gardez le VSCODE et le plug-in mis à jour et effectuez des tests suffisants; 5. Configurez la fonction de sauvegarde automatique pour éviter la perte de données.

Comment implémenter le déploiement automatisé de Docker sur Debian Comment implémenter le déploiement automatisé de Docker sur Debian May 28, 2025 pm 04:33 PM

La mise en œuvre du déploiement automatisé de Docker sur le système Debian peut être effectuée de diverses manières. Voici le guide détaillé des étapes: 1. Installez d'abord Docker, assurez-vous

See all articles