Back to Orleans

Microsoft Orleans Serialization for Newtonsoft.Json

src/Orleans.Serialization.NewtonsoftJson/README.md

10.1.02.9 KB
Original Source

Microsoft Orleans Serialization for Newtonsoft.Json

Introduction

Microsoft Orleans Serialization for Newtonsoft.Json provides JSON serialization support for Microsoft Orleans using the popular Newtonsoft.Json library. This allows you to use the comprehensive JSON features of Newtonsoft.Json within your Orleans application.

Getting Started

To use this package, install it via NuGet:

shell
dotnet add package Microsoft.Orleans.Serialization.NewtonsoftJson

Example - Configuring Newtonsoft.Json Serialization

csharp
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Orleans.Hosting;
using Orleans.Serialization;

var builder = Host.CreateApplicationBuilder(args)
    .UseOrleans(siloBuilder =>
    {
        siloBuilder
            .UseLocalhostClustering()
            // Configure Newtonsoft.Json as a serializer
            .AddSerializer(serializerBuilder => serializerBuilder.AddNewtonsoftJsonSerializer(type => type.Namespace.StartsWith("ExampleGrains")));
    });

// Run the host
await builder.RunAsync();

Example - Using Newtonsoft.Json with a Custom Type

csharp
using Orleans;
using Newtonsoft.Json;
namespace ExampleGrains;

// Define a class with Newtonsoft.Json attributes
public class MyJsonClass
{
    [JsonProperty("full_name")]
    public string Name { get; set; }
    
    [JsonProperty("age")]
    public int Age { get; set; }
    
    [JsonProperty("tags")]
    public List<string> Tags { get; set; }
    
    [JsonIgnore]
    public string SecretData { get; set; }
}

// You can use it directly in your grain interfaces and implementation
public interface IMyGrain : IGrainWithStringKey
{
    Task<MyJsonClass> GetData();
    Task SetData(MyJsonClass data);
}

public class MyGrain : Grain, IMyGrain
{
    private MyJsonClass _data;

    public Task<MyJsonClass> GetData()
    {
        return Task.FromResult(_data);
    }

    public Task SetData(MyJsonClass data)
    {
        _data = data;
        return Task.CompletedTask;
    }
}

Documentation

For more comprehensive documentation, please refer to:

Feedback & Contributing