diff --git a/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs b/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs
index 2a8e805499fd67..aa7404066fe22f 100644
--- a/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs
+++ b/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs
@@ -146,7 +146,10 @@ private void AddSource(string fileName, string source, bool isRootContextDef = f
bool isInGlobalNamespace = @namespace == JsonConstants.GlobalNamespaceValue;
StringBuilder sb = new(@"//
-#nullable enable");
+#nullable enable
+
+// Suppress warnings about [Obsolete] member usage in generated code.
+#pragma warning disable CS0618");
if (!isInGlobalNamespace)
{
diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs
index 2cb749bb40bc69..ca6b835f38170b 100644
--- a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs
+++ b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs
@@ -522,5 +522,36 @@ public class MyType
Assert.Equal(1, types.Count);
Assert.Equal("HelloWorld.MyType", types.Keys.First());
}
+
+ [Fact]
+ public static void NoWarningsDueToObsoleteMembers()
+ {
+ string source = @"using System;
+using System.Text.Json.Serialization;
+
+namespace Test
+{
+ [JsonSerializable(typeof(ClassWithObsolete))]
+ public partial class JsonContext : JsonSerializerContext { }
+
+ public class ClassWithObsolete
+ {
+ [Obsolete(""This is a test"")]
+ public bool Test { get; set; }
+ }
+}
+";
+
+ Compilation compilation = CompilationHelper.CreateCompilation(source);
+ JsonSourceGenerator generator = new JsonSourceGenerator();
+
+ Compilation newCompilation = CompilationHelper.RunGenerators(compilation, out _, generator);
+ ImmutableArray generatorDiags = newCompilation.GetDiagnostics();
+
+ // No diagnostics expected.
+ CompilationHelper.CheckDiagnosticMessages(DiagnosticSeverity.Info, generatorDiags, Array.Empty<(Location, string)>());
+ CompilationHelper.CheckDiagnosticMessages(DiagnosticSeverity.Warning, generatorDiags, Array.Empty<(Location, string)>());
+ CompilationHelper.CheckDiagnosticMessages(DiagnosticSeverity.Error, generatorDiags, Array.Empty<(Location, string)>());
+ }
}
}