The System.Text.Json message serializer uses the JSON serialization built in to .NET to serialize and deserialize messages. This serializer should be the default choice for serialization for new projects.
Usage
endpointConfiguration.UseSerialization<SystemJsonSerializer>();
Specifying content type
The default content type used is application/
but can be changed using:
endpointConfiguration.UseSerialization<SystemJsonSerializer>()
.ContentType("application/json; systemjson");
Adding a suffix like ; systemjson
requires all endpoint involved to use this case-sensitive full key. See NServiceBus.ContentType documentation for more information
Customizing serialization options
To control how the serialization and deserialzation is performed JsonSerializerOptions can be passed in:
var jsonSerializerOptions = new JsonSerializerOptions
{
WriteIndented = true
};
endpointConfiguration.UseSerialization<SystemJsonSerializer>()
.Options(jsonSerializerOptions);
Compatibility with Newtonsoft.Json
The System.Text.Json serializer is more limited compared to Newtonsoft.Json, see the upgrade guide for more details.
If needed, both serializers can be used side-by-side during a transition period by using multiple deserializers. For this to work, a custom content type needs to be specified as shown above.
Migration from the community version
Thanks to Simon Cropp who built the community version of the serializer and donated it to Particular Software.
The serializer is mostly compatible with the community version, see the upgrade guide for more details.