src/Orleans.Serialization.NewtonsoftJson/README.md
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.
To use this package, install it via NuGet:
dotnet add package Microsoft.Orleans.Serialization.NewtonsoftJson
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();
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;
}
}
For more comprehensive documentation, please refer to: