Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ public static JsonElement SafeClone(this JsonElement element)
using var jsonWriter = new Utf8JsonWriter(writer);

element.WriteTo(jsonWriter);
var reader = new Utf8JsonReader(writer.GetSpan(), true, default);
jsonWriter.Flush();
var reader = new Utf8JsonReader(writer.GetWrittenSpan(), true, default);

return JsonElement.ParseValue(ref reader);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@ public override JsonElement Parse(JsonElement serializedValue)
// write json value to buffer.
using var jsonWriter = new Utf8JsonWriter(writer);
serializedValue.WriteTo(jsonWriter);
jsonWriter.Flush();

// now we read the buffer and create an element that does not need to be disposed.
var reader = new Utf8JsonReader(writer.GetSpan(), true, default);
var reader = new Utf8JsonReader(writer.GetWrittenSpan(), true, default);
return JsonElement.ParseValue(ref reader);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,35 @@ public void Parse()
Assert.Equal(element.ToString(), serialized.ToString());
}

[Fact]
public void ParseLarge()
{
// arrange
var json = System.Text.Json.JsonSerializer.SerializeToElement($@"""{"padding",10000}""");

// act
var serialized = _serializer.Parse(json);

// assert
Assert.Equal(json.ToString(), serialized.ToString());
}

[Fact]
public void UseAfterDispose()
{
// arrange
var json = JsonDocument.Parse(@"{ ""abc"": {""def"":""def""} }");
var element = json.RootElement.EnumerateObject().First().Value;

// act
var serialized = _serializer.Parse(element);
var expected = element.ToString();
json.Dispose();

// assert
Assert.Equal(expected, serialized.ToString());
}

[Fact]
public void Format()
{
Expand Down