vendredi 15 mars 2024

Serialisation/Deserialisation


La sérialisation et la désérialisation sont des processus qui permettent de convertir des objets en une forme qui peut être facilement stockée, transmise ou reconstruite, et vice versa. Ces processus sont couramment utilisés pour la communication entre applications, le stockage de données et le passage d'objets entre les différentes parties d'une application.

1. **Sérialisation :**

- La sérialisation est le processus de conversion d'un objet ou d'une structure de données en un format qui peut être facilement stocké ou transmis, souvent sous forme de texte ou de flux d'octets.

- En C#, cela est généralement réalisé à l'aide de classes de sérialisation telles que `XmlSerializer` pour XML, `DataContractSerializer` pour JSON, ou `BinaryFormatter` pour la sérialisation binaire.

Exemple de sérialisation JSON avec `DataContractJsonSerializer` :

```csharp

[DataContract]

public class Person

{

[DataMember]

public string Name { get; set; }

[DataMember]

public int Age { get; set; }

}

// Sérialisation

Person person = new Person { Name = "John Doe", Age = 30 };

MemoryStream stream = new MemoryStream();

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Person));

serializer.WriteObject(stream, person);

string jsonString = Encoding.UTF8.GetString(stream.ToArray());

```

2. **Désérialisation :**

- La désérialisation est le processus inverse de la sérialisation, où un objet est reconstruit à partir des données sérialisées.

- Les mêmes classes ou mécanismes utilisés pour la sérialisation sont souvent utilisés pour la désérialisation.

Exemple de désérialisation JSON avec `DataContractJsonSerializer` :

```csharp

// Désérialisation

MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));

DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(Person));

Person deserializedPerson = (Person)deserializer.ReadObject(stream);

```

En résumé, la sérialisation est utilisée pour convertir des objets en un format externe, généralement dans le but de stockage ou de transmission, tandis que la désérialisation est utilisée pour reconstruire des objets à partir de données sérialisées. Ces concepts sont essentiels pour la communication inter-processus, le stockage de données et d'autres scénarios où la persistance et le partage d'objets sont nécessaires.

Aucun commentaire:

Enregistrer un commentaire