Table of Contents

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

options JsonSerializerOptions

The JsonSerializerOptions to extend.

setup Action<JsonSerializerOptions>

The JsonSerializerOptions which may be configured.

Returns

JsonSerializerOptions

A new cloned instance of options with optional altering as specified by the setup delegate.

Exceptions

ArgumentNullException

options cannot be null.

SetPropertyName(JsonSerializerOptions, string)

Returns the specified name adhering to the underlying PropertyNamingPolicy.

public static string SetPropertyName(this JsonSerializerOptions options, string name)

Parameters

options JsonSerializerOptions

The options from which to apply a property naming policy.

name string

The name to apply to a JSON property.

Returns

string

When PropertyNamingPolicy is null, the specified name is returned unaltered; otherwise it is converted according to the JsonNamingPolicy.

Remarks

A convenient way of defining the property name according to Microsoft design decisions.