diff --git a/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs b/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs
index 087f3e2dc4095c..8b354004adad71 100644
--- a/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs
+++ b/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs
@@ -147,7 +147,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 69ca5e498f5f96..cb297b56a0fa30 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
@@ -521,5 +521,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)>());
+ }
}
}