Class JsonSerializerOptionsExtensions
- Namespace
- Cuemon.Extensions.Text.Json
- Assembly
- Cuemon.Extensions.Text.Json.dll
Extension methods for the JsonSerializerOptions class.
public static class JsonSerializerOptionsExtensions
- Inheritance
-
JsonSerializerOptionsExtensions
Examples
JsonSerializerOptionsExtensions provides Clone, SetPropertyName, and DefaultOrConvertName extension methods for duplicating and transforming JsonSerializerOptions instances. This example creates base options with CamelCase and WriteIndented = true, clones them with WriteIndented = false via Clone, and demonstrates SetPropertyName which converts property names according to the naming policy. Key steps include passing a setup delegate to Clone to override specific settings without modifying the original. Console output confirms the original has WriteIndented = True while the clone has False, and SetPropertyName("OrderDate") returns "orderDate" under CamelCase or "OrderDate" when no policy is set.
using System;
using System.Text.Json;
using Cuemon.Extensions.Text.Json;
namespace MyApp.Examples;
public class JsonSerializerOptionsExtensionsExample
{
public static void Main()
{
// Create base options with a camelCase naming policy
var baseOptions = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
WriteIndented = true
};
// Clone the options and override the WriteIndented setting
JsonSerializerOptions cloned = baseOptions.Clone(options =>
{
options.WriteIndented = false;
});
Console.WriteLine($"Original WriteIndented: {baseOptions.WriteIndented}"); // True
Console.WriteLine($"Cloned WriteIndented: {cloned.WriteIndented}"); // False
// SetPropertyName converts property names according to the naming policy
string propertyName = baseOptions.SetPropertyName("OrderDate");
Console.WriteLine($"Converted property name: {propertyName}"); // Output: "orderDate"
// When no naming policy is set, the name is returned unaltered
var plainOptions = new JsonSerializerOptions();
string unchanged = plainOptions.SetPropertyName("OrderDate");
Console.WriteLine($"Unchanged property name: {unchanged}"); // Output: "OrderDate"
}
}
Methods
Clone(JsonSerializerOptions, Action<JsonSerializerOptions>)
Copies the options from a JsonSerializerOptions instance to a new instance.
public static JsonSerializerOptions Clone(this JsonSerializerOptions options, Action<JsonSerializerOptions> setup = null)
Parameters
optionsJsonSerializerOptionsThe JsonSerializerOptions to extend.
setupAction<JsonSerializerOptions>The JsonSerializerOptions which may be configured.
Returns
- JsonSerializerOptions
A new cloned instance of
optionswith optional altering as specified by thesetupdelegate.
Exceptions
- ArgumentNullException
optionscannot be null.
SetPropertyName(JsonSerializerOptions, string)
Returns the specified name adhering to the underlying PropertyNamingPolicy.
public static string SetPropertyName(this JsonSerializerOptions options, string name)
Parameters
optionsJsonSerializerOptionsThe options from which to apply a property naming policy.
namestringThe name to apply to a JSON property.
Returns
- string
When PropertyNamingPolicy is null, the specified
nameis returned unaltered; otherwise it is converted according to the JsonNamingPolicy.
Remarks
A convenient way of defining the property name according to Microsoft design decisions.