DTO Serialization - STARIONGROUP/COMET-SDK-Community-Edition GitHub Wiki

Overview

The CDP4JsonSerializer supports the serialization of a C# object and is performance optimized for DTO objects and the Classless-DTO. The CDP4JsonSerializer supports both serialization to a stream and a to string.

The following snippet demonstrates how to serialize a POCO to a Stream

var metadataprovider = new MetaDataProvider();
var serializer = new Cdp4JsonSerializer(this.metadataprovider, new Version(1, 1, 0));

var siteDirectory = new CDP4Common.SiteDirectoryData.SiteDirectory();
var person = new CDP4Common.SiteDirectoryData.Person();
siteDirectory.person.Add(person);

using (var stream = new MemoryStream())
{
    serializer.SerializeToStream(siteDirectory, stream, true);
}

The following code snippet demonstrates how to serialize a DTO to a Stream

var metadataprovider = new MetaDataProvider();
var serializer = new Cdp4JsonSerializer(this.metadataprovider, new Version(1, 1, 0));

var siteDirectory = new CDP4Common.DTO.SiteDirectory();
using (var stream = new MemoryStream())
{
    serializer.SerializeToStream(siteDirectory, stream);
}

The following snippet demonstrates how to serialize a POCO to a string

var metadataprovider = new MetaDataProvider();
var serializer = new Cdp4JsonSerializer(this.metadataprovider, new Version(1, 1, 0));

var siteDirectory = new CDP4Common.SiteDirectoryData.SiteDirectory();
var person = new CDP4Common.SiteDirectoryData.Person();
siteDirectory.person.Add(person);

var json = serializer.SerializeToStream(siteDirectory, true);

CDP4-COMET Optimized Serialization

The Json.NET library provides means to customize and control how objects are serialized. The JsonSerializer is used for serialization, using the JsonConverter for optimized DTO and Classless-DTO serialization.

ThingSerializer

The ThingSerializer derives from the JsonConverter. The WriteJson method is overriden to only serialize those classes and properties that are to be included according to the specified CDP Version. The static SerializerProvider implements the ToJsonObject extension method that converts a DTO to a JObject using the IThingSerializer that corresponds to the DTO that is to be serialized.

ClasslessDtoSerializer

The ClasslessDtoSerializer derives from the JsonConverter. The WriteJson method is overriden to only serialize those classes and properties that are to be included according to the specified CDP Version. The static SerializerProvider implements the ToJsonObject extension method that converts a Classless-DTO to a JObject using the IThingSerializer that corresponds to the ClassKind of the content of the Classless-DTO that is to be serialized.