Sérialisation et désérialisation JSON avec Rust

JSON (JavaScript Object Notation) est devenu un format d’échange de données populaire dans le développement de logiciels en raison de sa simplicité, de sa lisibilité et de sa prise en charge généralisée dans divers langages de programmation. JSON est une alternative légère à XML pour la transmission de données entre un serveur et une application web ou entre différents composants de systèmes logiciels.

L’un des principaux aspects du travail avec JSON est le processus de sérialisation et de désérialisation qui vous permet de convertir les données JSON dans un format structuré que vous pouvez facilement manipuler dans vos programmes. La plupart du temps, si vous souhaitez travailler avec JSON dans d’autres langages, vous devrez sérialiser et désérialiser les données JSON dans les structures de données intégrées du langage.

Premiers pas avec Serde

Serde (serialization and deserialization) est une bibliothèque Rust largement utilisée qui fournit un cadre pour convertir les structures de données Rust dans des formats de stockage, de transmission, de partage et autres.

Serde permet une conversion transparente entre les types de données Rust et divers formats d’échange de données, notamment JSON, YAML, BSON, CBOR, MessagePack, etc.

L’objectif principal de Serde est de rendre le processus de sérialisation et de désérialisation aussi simple et efficace que possible tout en conservant des caractéristiques de typage et de sécurité solides.

Ajoutez ces directives au fichier dépendances de votre Cargo.toml pour installer et utiliser Serde comme dépendance tierce avec Cargo.

Vous aurez besoin à la fois du serde et serde_json pour interagir avec JSON. Les crates serde fournit les fonctionnalités de base, et le crate serde_json est une implémentation spécifique de Serde pour travailler avec JSON.

Voici comment vous pouvez importer l’implémentation serde_json et le crate Serialize et Désérialiser à partir des modules serde crate :

Voir aussi :  Comment créer un formulaire de contact avec Formspree

Dans l’ensemble, Serde est un outil puissant dont vous aurez besoin dans votre arsenal de développement si vous travaillez avec JSON en Rust.

Sérialisation des données avec Serde

Le processus de sérialisation JSON implique la conversion d’un type Rust (personnalisé ou intégré) en JSON pour d’autres opérations. Serde fournit un ensemble d’attributs que vous pouvez utiliser avec Rust struct pour permettre un contrôle précis sur le processus de sérialisation, y compris les attributs # qui vous permet de générer du code de sérialisation pour vos structures de données et de convertir votre Rust struct en JSON.

Prenons l’exemple d’une structure représentant les données biologiques d’une personne ; voici comment vous pouvez importer et utiliser l’attribut Serialize sur la structure :

En annotant l’attribut Personne avec la structure vous demandez à Serde de générer le code de sérialisation nécessaire pour le fichier Personne automatiquement.

Voici comment sérialiser une instance de la structure Personne en JSON :

Dans la structure principal la fonction serde_json sérialise le fichier personne . L’objet to_string prend une référence à l’objet personne et renvoie une chaîne JSON représentant les données sérialisées.

Enfin, l’objet principal imprime le JSON sérialisé sur la console.

La fonction serde et serde_json sont polyvalents, vous pouvez également sérialiser des tableaux avec serde.

Les points est un vecteur de coordonnées représentant des points sur un plan. L’application des Sérialiser à l’attribut Coordonnées vous permet de sérialiser le vecteur en JSON sans effort.

De plus, vous pouvez sérialiser les enums en JSON avec serde comme vous sérialisez les structs et les vecteurs.

Selon la variante, le processus de sérialisation s’adapte en conséquence (dans le cas présent, l’élément Animal::Chien comprend une variante String que Serde sérialisera sous la forme d’une chaîne JSON).

Désérialisation des données avec Serde

La désérialisation JSON est le processus de transformation des données JSON en types de données natifs d’un langage de programmation. Serde fournit un cadre complet pour la désérialisation JSON qui fonctionne sur la plupart des types de données intégrés.

Voir aussi :  6 meilleures extensions ChatGPT pour VS Code

Comme pour la sérialisation, Serde propose des attributs que vous pouvez utiliser pour annoter vos structures Rust pour le processus de désérialisation. Deux attributs couramment utilisés pour la sérialisation sont les attributs # et # sont deux attributs couramment utilisés pour la sérialisation.

Les attributs # dérive automatiquement l’implémentation de la désérialisation pour vos types de structures Rust, tandis que l’attribut # vous permet de faire correspondre les champs de la structure aux noms de champs JSON correspondants.

Voici comment vous pouvez désérialiser des données JSON dans un type struct personnalisé avec Serde :

En annotant l’attribut Personne avec la structure # vous indiquez que Serde peut désérialiser la structure à partir de JSON. L’attribut # met en correspondance l’attribut nom du JSON au champ nom_complet dans le champ full_name .

Le champ from_str désérialise la chaîne de caractères json_data dans la variable personne et l’objet principal imprime les champs sur la console.

Serde prend en charge la désérialisation sur divers types de données Rust, notamment les types primitifs, les enums, les structures imbriquées et les collections.

Voici comment désérialiser un tableau JSON en une structure Rust contenant un champ vectoriel :

Les principal désérialise le fichier json_data dans le fichier données et la boucle imprime les éléments du vecteur.

Vous devez vous assurer que vous disposez des bons types de données et identifiants pour un processus de désérialisation.

Serde interagit avec les frameworks Web Rust les plus répandus

Serde est une bibliothèque puissante avec de nombreuses fonctionnalités et une API simple pour sérialiser et désérialiser des données dans différents formats.

Voir aussi :  Comment lister les branches distantes dans Git, et pourquoi vous devez le faire.

Serde est largement adopté dans l’écosystème Rust, et de nombreux crates et frameworks populaires ont un support intégré pour Serde, y compris des frameworks web populaires comme Actix, Warp, et Rocket et des ORMs de base de données comme Diesel.

Qu’est-ce que la sérialisation et la désérialisation en Rust ?

Rustc doit sérialiser et désérialiser différentes données lors de la compilation. En particulier : « Crate metadata », principalement les sorties de requêtes, sont sérialisées dans un format binaire dans les fichiers rlib et rmeta qui sont produits lors de la compilation d’une bibliothèque crate, ceux-ci sont ensuite désérialisés par les crates qui dépendent de cette bibliothèque.

Rust supporte-t-il JSON ?

Introduction à Rust JSON. JSON signifie Javascript Object Notation, il fonctionne de la même manière que n’importe quel autre langage de programmation. JSON sont très légers et stocker n’importe quoi en eux, principalement JSON en rust ou tout autre langage de programmation est utilisé pour transférer des données du serveur aux pages web et vice versa.

Quelle est la différence entre le sérialiseur et le désérialiseur en JSON ?

La sérialisation est le processus de conversion de l’état d’un objet, c’est-à-dire des valeurs de ses propriétés, en une forme qui peut être stockée ou transmise. La forme sérialisée n’inclut aucune information sur les méthodes associées à un objet. La désérialisation reconstruit un objet à partir de la forme sérialisée.

Quelle est la meilleure bibliothèque JSON pour Rust ?

Bien qu’il existe de nombreux autres crates JSON disponibles, serde_json est de loin le plus populaire. Le large écosystème construit autour de serde en fait le meilleur choix pour les serveurs web écrits en Rust. Dans ce tutoriel, nous allons explorer serde_json et démontrer comment utiliser le système de type de Rust pour exprimer des données JSON.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *