using System;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Amazon.Lambda.Serialization.SystemTextJson.Converters
{
///
/// ByteArrayConverter for converting an JSON array of number from and to byte[].
///
public class ByteArrayConverter : JsonConverter
{
///
public override byte[] Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.Null)
{
return null;
}
var byteList = new List();
while (reader.Read())
{
switch (reader.TokenType)
{
case JsonTokenType.Number:
byteList.Add(reader.GetByte());
break;
case JsonTokenType.EndArray:
return byteList.ToArray();
}
}
throw new JsonException("The JSON value could not be converted to byte[].");
}
///
public override void Write(Utf8JsonWriter writer, byte[] values, JsonSerializerOptions options)
{
if (values == null)
{
writer.WriteNullValue();
}
else
{
writer.WriteStartArray();
foreach (var value in values)
{
writer.WriteNumberValue(value);
}
writer.WriteEndArray();
}
}
}
}