diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Utilities/AIJsonUtilities.Schema.Create.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Utilities/AIJsonUtilities.Schema.Create.cs index 667b3c4d080..45ded0badc4 100644 --- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Utilities/AIJsonUtilities.Schema.Create.cs +++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Utilities/AIJsonUtilities.Schema.Create.cs @@ -188,7 +188,7 @@ public static JsonElement CreateJsonSchema( } /// Gets the default JSON schema to be used by types or functions. - internal static JsonElement DefaultJsonSchema { get; } = ParseJsonElement("{}"u8); + internal static JsonElement DefaultJsonSchema { get; } = JsonElement.Parse("{}"u8); /// Validates the provided JSON schema document. internal static void ValidateSchemaDocument(JsonElement document, [CallerArgumentExpression("document")] string? paramName = null) @@ -750,12 +750,6 @@ private static void InsertAtStart(this JsonObject jsonObject, string key, JsonNo #endif } - private static JsonElement ParseJsonElement(ReadOnlySpan utf8Json) - { - Utf8JsonReader reader = new(utf8Json); - return JsonElement.ParseValue(ref reader); - } - /// /// Tries to get the effective default value for a parameter, checking both C# default value syntax and DefaultValueAttribute. /// diff --git a/src/Libraries/Microsoft.Extensions.AI.OpenAI/MicrosoftExtensionsAIChatExtensions.cs b/src/Libraries/Microsoft.Extensions.AI.OpenAI/MicrosoftExtensionsAIChatExtensions.cs index acdc42be3e0..40009005cb6 100644 --- a/src/Libraries/Microsoft.Extensions.AI.OpenAI/MicrosoftExtensionsAIChatExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.AI.OpenAI/MicrosoftExtensionsAIChatExtensions.cs @@ -234,7 +234,7 @@ static object ToToolResult(ChatMessageContent content) part.Write(writer, ModelReaderWriterOptions.Json); } - return JsonSerializer.Deserialize(ms.GetBuffer().AsSpan(0, (int)ms.Position), AIJsonUtilities.DefaultOptions.GetTypeInfo(typeof(JsonElement)))!; + return JsonElement.Parse(ms.GetBuffer().AsSpan(0, (int)ms.Position)); } break; diff --git a/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/ChatCompletion/ChatResponseFormatTests.cs b/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/ChatCompletion/ChatResponseFormatTests.cs index 420871ca9e6..41fdcde0dfa 100644 --- a/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/ChatCompletion/ChatResponseFormatTests.cs +++ b/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/ChatCompletion/ChatResponseFormatTests.cs @@ -76,7 +76,7 @@ public void Serialization_JsonRoundtrips() public void Serialization_ForJsonSchemaRoundtrips() { string json = JsonSerializer.Serialize( - ChatResponseFormat.ForJsonSchema(JsonSerializer.Deserialize("[1,2,3]", AIJsonUtilities.DefaultOptions), "name", "description"), + ChatResponseFormat.ForJsonSchema(JsonElement.Parse("[1,2,3]"), "name", "description"), TestJsonSerializerContext.Default.ChatResponseFormat); Assert.Equal("""{"$type":"json","schema":[1,2,3],"schemaName":"name","schemaDescription":"description"}""", json); diff --git a/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Contents/AIAnnotationTests.cs b/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Contents/AIAnnotationTests.cs index 2cfb5c765b7..6e80400310a 100644 --- a/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Contents/AIAnnotationTests.cs +++ b/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Contents/AIAnnotationTests.cs @@ -57,7 +57,7 @@ public void Serialization_Roundtrips() Assert.NotNull(deserialized.AdditionalProperties); Assert.Single(deserialized.AdditionalProperties); - Assert.Equal(JsonSerializer.Deserialize("\"value\"", AIJsonUtilities.DefaultOptions).ToString(), deserialized.AdditionalProperties["key"]!.ToString()); + Assert.Equal(JsonElement.Parse("\"value\"").ToString(), deserialized.AdditionalProperties["key"]!.ToString()); Assert.Null(deserialized.RawRepresentation); diff --git a/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Contents/CitationAnnotationTests.cs b/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Contents/CitationAnnotationTests.cs index 08097f3e05e..a110ff67022 100644 --- a/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Contents/CitationAnnotationTests.cs +++ b/test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Contents/CitationAnnotationTests.cs @@ -83,7 +83,7 @@ public void Serialization_Roundtrips() Assert.NotNull(deserialized.AdditionalProperties); Assert.Single(deserialized.AdditionalProperties); - Assert.Equal(JsonSerializer.Deserialize("\"value\"", AIJsonUtilities.DefaultOptions).ToString(), deserialized.AdditionalProperties["key"]!.ToString()); + Assert.Equal(JsonElement.Parse("\"value\"").ToString(), deserialized.AdditionalProperties["key"]!.ToString()); Assert.Null(deserialized.RawRepresentation); Assert.Equal("snippet", deserialized.Snippet); diff --git a/test/Libraries/Microsoft.Extensions.AI.AzureAIInference.Tests/AzureAIInferenceChatClientTests.cs b/test/Libraries/Microsoft.Extensions.AI.AzureAIInference.Tests/AzureAIInferenceChatClientTests.cs index 8b9f3d50cc2..1431f5096f5 100644 --- a/test/Libraries/Microsoft.Extensions.AI.AzureAIInference.Tests/AzureAIInferenceChatClientTests.cs +++ b/test/Libraries/Microsoft.Extensions.AI.AzureAIInference.Tests/AzureAIInferenceChatClientTests.cs @@ -886,7 +886,7 @@ public async Task ResponseFormat_JsonSchema_NonStreaming() Assert.NotNull(await client.GetResponseAsync("hello", new() { - ResponseFormat = ChatResponseFormat.ForJsonSchema(JsonSerializer.Deserialize(""" + ResponseFormat = ChatResponseFormat.ForJsonSchema(JsonElement.Parse(""" { "type": "object", "properties": { diff --git a/test/Libraries/Microsoft.Extensions.AI.Integration.Tests/ChatClientIntegrationTests.cs b/test/Libraries/Microsoft.Extensions.AI.Integration.Tests/ChatClientIntegrationTests.cs index 992e86a1184..7b1dd10a2bd 100644 --- a/test/Libraries/Microsoft.Extensions.AI.Integration.Tests/ChatClientIntegrationTests.cs +++ b/test/Libraries/Microsoft.Extensions.AI.Integration.Tests/ChatClientIntegrationTests.cs @@ -518,7 +518,7 @@ private sealed class CustomAIFunction(string name, string jsonSchema, IReadOnlyD { public override string Name => name; public override IReadOnlyDictionary AdditionalProperties => additionalProperties; - public override JsonElement JsonSchema { get; } = JsonSerializer.Deserialize(jsonSchema, AIJsonUtilities.DefaultOptions); + public override JsonElement JsonSchema { get; } = JsonElement.Parse(jsonSchema); protected override ValueTask InvokeCoreAsync(AIFunctionArguments arguments, CancellationToken cancellationToken) => throw new NotSupportedException(); } diff --git a/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIConversionTests.cs b/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIConversionTests.cs index 7fe1ceb8b57..9c4ffeefdcd 100644 --- a/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIConversionTests.cs +++ b/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIConversionTests.cs @@ -485,7 +485,7 @@ public void AsOpenAIChatMessages_ProducesExpectedOutput(bool withOptions) { ["param1"] = "value1", ["param2"] = 42 - }), JsonSerializer.Deserialize(tc.FunctionArguments.ToMemory().Span))); + }), JsonElement.Parse(tc.FunctionArguments.ToMemory().Span))); Assert.Equal("JohnSmith", m2.ParticipantName); ToolChatMessage m3 = Assert.IsType(convertedMessages[index + 3], exactMatch: false); @@ -541,7 +541,7 @@ public void AsOpenAIResponseItems_ProducesExpectedOutput() { ["param1"] = "value1", ["param2"] = 42 - }), JsonSerializer.Deserialize(m3.FunctionArguments.ToMemory().Span))); + }), JsonElement.Parse(m3.FunctionArguments.ToMemory().Span))); FunctionCallOutputResponseItem m4 = Assert.IsAssignableFrom(convertedItems[4]); Assert.Equal("callid123", m4.CallId);