#### [Abblix\.Utils](https://www.abblix.com/en/docs/api/abblix-utils 'index')
### [Abblix\.Utils\.Json](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Json 'Abblix\.Utils\.Json')

## ArrayConverter\<TElement,TConverter\> Class

JSON converter for nullable\-element arrays of [TElement](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Json.ArrayConverter_TElement_TConverter_#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.TElement 'Abblix\.Utils\.Json\.ArrayConverter\<TElement,TConverter\>\.TElement')\. Each non\-null element is
delegated to an instance of [TConverter](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Json.ArrayConverter_TElement_TConverter_#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.TConverter 'Abblix\.Utils\.Json\.ArrayConverter\<TElement,TConverter\>\.TConverter'); each `null` element is preserved as
`default()` on read and emitted as a JSON `null` on write,
independently of how the inner converter would handle null\. A whole\-array JSON `null` deserializes
to a `null` array\. Read accepts any JSON value form the inner converter can consume \(string, number,
boolean, object, nested array\), keeping it symmetric with whatever Write can produce\.

```csharp
public class ArrayConverter<TElement,TConverter> : System.Text.Json.Serialization.JsonConverter<TElement?[]?>
    where TConverter : System.Text.Json.Serialization.JsonConverter<TElement>, new()
```
#### Type parameters

###### `TElement` {#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.TElement}

The element type of the array\.

###### `TConverter` {#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.TConverter}

The per\-element converter; instantiated once per [ArrayConverter&lt;TElement,TConverter&gt;](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Json.ArrayConverter_TElement_TConverter_ 'Abblix\.Utils\.Json\.ArrayConverter\<TElement,TConverter\>')\.

Inheritance [System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object') → [System\.Text\.Json\.Serialization\.JsonConverter](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.serialization.jsonconverter 'System\.Text\.Json\.Serialization\.JsonConverter') → [System\.Text\.Json\.Serialization\.JsonConverter&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.serialization.jsonconverter-1 'System\.Text\.Json\.Serialization\.JsonConverter\`1')[TElement](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Json.ArrayConverter_TElement_TConverter_#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.TElement 'Abblix\.Utils\.Json\.ArrayConverter\<TElement,TConverter\>\.TElement')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.serialization.jsonconverter-1 'System\.Text\.Json\.Serialization\.JsonConverter\`1') → ArrayConverter\<TElement,TConverter\>
### Methods

## ArrayConverter\<TElement,TConverter\>\.Read\(Utf8JsonReader, Type, JsonSerializerOptions\) Method {#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.Read(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.JsonSerializerOptions)}

Deserializes a JSON array into [TElement](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Json.ArrayConverter_TElement_TConverter_#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.TElement 'Abblix\.Utils\.Json\.ArrayConverter\<TElement,TConverter\>\.TElement')?\[\]?, or returns a `null` array
when the whole value is JSON `null`\. Inside the array, a JSON `null` element becomes
`default()` without invoking the inner converter; every other
value\-start token \(string, number, boolean, object, nested array\) is forwarded to the inner converter\.

```csharp
public override TElement?[]? Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options);
```
#### Parameters

###### `reader` [System\.Text\.Json\.Utf8JsonReader](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.utf8jsonreader 'System\.Text\.Json\.Utf8JsonReader') {#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.Read(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.JsonSerializerOptions).reader}

The reader positioned at the value to deserialize\.

###### `typeToConvert` [System\.Type](https://learn.microsoft.com/en-us/dotnet/api/system.type 'System\.Type') {#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.Read(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.JsonSerializerOptions).typeToConvert}

The CLR type the framework asked to deserialize into\.

###### `options` [System\.Text\.Json\.JsonSerializerOptions](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions 'System\.Text\.Json\.JsonSerializerOptions') {#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.Read(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.JsonSerializerOptions).options}

Serializer options forwarded to the inner converter\.

#### Returns
[TElement](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Json.ArrayConverter_TElement_TConverter_#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.TElement 'Abblix\.Utils\.Json\.ArrayConverter\<TElement,TConverter\>\.TElement')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array')  
The deserialized array, or `null`\.

## ArrayConverter\<TElement,TConverter\>\.Write\(Utf8JsonWriter, TElement\[\], JsonSerializerOptions\) Method {#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.Write(System.Text.Json.Utf8JsonWriter,TElement[],System.Text.Json.JsonSerializerOptions)}

Writes an array of [TElement](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Json.ArrayConverter_TElement_TConverter_#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.TElement 'Abblix\.Utils\.Json\.ArrayConverter\<TElement,TConverter\>\.TElement') to JSON\.

```csharp
public override void Write(System.Text.Json.Utf8JsonWriter writer, TElement?[]? value, System.Text.Json.JsonSerializerOptions options);
```
#### Parameters

###### `writer` [System\.Text\.Json\.Utf8JsonWriter](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.utf8jsonwriter 'System\.Text\.Json\.Utf8JsonWriter') {#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.Write(System.Text.Json.Utf8JsonWriter,TElement[],System.Text.Json.JsonSerializerOptions).writer}

The writer to write JSON to\.

###### `value` [TElement](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Json.ArrayConverter_TElement_TConverter_#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.TElement 'Abblix\.Utils\.Json\.ArrayConverter\<TElement,TConverter\>\.TElement')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array') {#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.Write(System.Text.Json.Utf8JsonWriter,TElement[],System.Text.Json.JsonSerializerOptions).value}

The array of [TElement](https://www.abblix.com/en/docs/api/abblix-utils/Abblix.Utils.Json.ArrayConverter_TElement_TConverter_#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.TElement 'Abblix\.Utils\.Json\.ArrayConverter\<TElement,TConverter\>\.TElement') to write\.

###### `options` [System\.Text\.Json\.JsonSerializerOptions](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions 'System\.Text\.Json\.JsonSerializerOptions') {#Abblix.Utils.Json.ArrayConverter_TElement,TConverter_.Write(System.Text.Json.Utf8JsonWriter,TElement[],System.Text.Json.JsonSerializerOptions).options}

Options for the serializer\.
