Unable to deserialize ArraySegment<int> with System.Text.Json.JsonSerializer.Deserialize #107783
Description
Description
Unable to deserialize ArraySegment<int>
using System.Text.Json.JsonSerializer
, even when the value was serialized using System.Text.Json.JsonSerializer
.
Reproduction Steps
Use XUnit test below:
[Fact]
public void Should_serialize_with_system_text_json()
{
int[] src = [1, 2, 3];
var arraySegment = new ArraySegment<int>(src);
var json = System.Text.Json.JsonSerializer.Serialize(arraySegment);
_testOutputHelper.WriteLine(json);
var obj = System.Text.Json.JsonSerializer.Deserialize<ArraySegment<int>>(json);
Assert.Equal(3, obj.Count);
}
Expected behavior
The System.Text.Json.JsonSerializer
should be able to successfully deserialize an ArraySegment<int>
object that was serialized using the same or other serializer, without any errors or data loss.
Actual behavior
When attempting to deserialize an ArraySegment<int>
object using System.Text.Json.JsonSerializer
, a NotSupportedException
is thrown, indicating that deserialization is not supported for this type, despite it being serialized with the same serializer.
Regression?
No response
Known Workarounds
As a workaround, you can use Newtonsoft.Json.JsonConvert
for both serialization and deserialization of ArraySegment<int>
. JsonConvert
handles this type without throwing exceptions, providing a seamless serialization/deserialization process.
Configuration
Other information
No response
Activity