# Newtonsoft JSON Serializer sample This sample uses the Newtonsoft serializer [NServiceBus.Newtonsoft.Json](https://github.com/Particular/NServiceBus.Newtonsoft.Json) to provide full access to the [Newtonsoft Json.net](https://www.newtonsoft.com/json) API. ## Configuring to use NServiceBus.Newtonsoft.Json ```cs var endpointConfiguration = new EndpointConfiguration("Samples.Serialization.ExternalJson"); var settings = new JsonSerializerSettings { Formatting = Formatting.Indented }; var serialization = endpointConfiguration.UseSerialization(); serialization.Settings(settings); ``` ## Diagnostic mutator A helper that will log the contents of any incoming message: ```cs public class MessageBodyWriter(ILogger logger) : IMutateIncomingTransportMessages { public Task MutateIncoming(MutateIncomingTransportMessageContext context) { var bodyAsString = Encoding.UTF8 .GetString(context.Body.ToArray()); logger.LogInformation("Serialized Message Body:"); logger.LogInformation(bodyAsString); return Task.CompletedTask; } } ``` Register the mutator: ```cs builder.Services.AddSingleton(); // Then later get it from the service provider when needed var serviceProvider = builder.Services.BuildServiceProvider(); var messageBodyWriter = serviceProvider.GetRequiredService(); endpointConfiguration.RegisterMessageMutator(messageBodyWriter); ``` ## Sending the message ```cs var message = new CreateOrder { OrderId = 9, Date = DateTime.Now, CustomerId = 12, OrderItems = new List { new OrderItem { ItemId = 6, Quantity = 2 }, new OrderItem { ItemId = 5, Quantity = 4 }, } }; await messageSession.SendLocal(message); Console.WriteLine("Order Sent"); ``` ## Output ```json { "OrderId": 9, "Date": "2015-09-15T10:23:44.9367871+10:00", "CustomerId": 12, "OrderItems": [ { "ItemId": 6, "Quantity": 2 }, { "ItemId": 5, "Quantity": 4 } ] } ```