Table of Contents

FinancialJsonSerializerOptionsExtensions Class

Definition

Namespace
Bodu.Financial.Serialization.Json
Assembly
Bodu.Financial.Serialization.Json.dll
Package
Bodu.Financial.Serialization.Json 1.0.0
Source
FinancialJsonSerializerOptionsExtensions.cs

Extension methods that register the Bodu.Financial JSON converters on a JsonSerializerOptions, picking a coherent shape for every shipped monetary type from a single FinancialJsonPolicy value.

public static class FinancialJsonSerializerOptionsExtensions
Inheritance
FinancialJsonSerializerOptionsExtensions
Inherited Members

Methods

AddFinancialJsonConverters(JsonSerializerOptions, FinancialJsonPolicy)

Adds the Money<TCurrency>, Money, CalculatedMoney, MoneyBag, ExchangeRate, and CurrencyPair JSON converters to options, configured for the supplied policy.

public static JsonSerializerOptions AddFinancialJsonConverters(this JsonSerializerOptions options, FinancialJsonPolicy policy = FinancialJsonPolicy.Strict)

Parameters

options JsonSerializerOptions

The serializer options to extend.

policy FinancialJsonPolicy

The serialization policy applied to every registered converter. Defaults to Strict.

Returns

JsonSerializerOptions

The same options instance, so calls can be chained inline.

Remarks

The core Bodu.Financial types carry no [JsonConverter] attribute - the library is serialization-agnostic - so this call is required for Money, Money<TCurrency>, MoneyBag, ExchangeRate, and CurrencyPair to round-trip through their canonical shapes.

Use the Strict policy for ledger / persistence data, the Lenient policy for import workflows, and the Compact policy for the compact "19.99 USD" string form.

All three policies preserve monetary precision on round-trip: a Money carrying an explicit minor-unit scale (a unit price) persists that scale - via a scale property in the object shapes and via the printed fractional digits in the compact form - and a CalculatedMoney serializes its full unrounded amount verbatim.

Exceptions

ArgumentNullException

options is null.

ArgumentOutOfRangeException

policy is not a defined FinancialJsonPolicy value.

InvalidOperationException

options has already been used for serialization or deserialization, in which case Converters is read-only. Configure options before first use.

Applies to

ProductVersions
.NET8, 10