Skip to content

Commit 495809a

Browse files
committed
Use [JsonStringEnumMemberName] instead of [EnumMember]
System.Text.Json ignores the `System.Runtime.Serialization.EnumMember` attribute. It needs the [`System.Text.Json.Serialization.JsonStringEnumMemberName` attribute](https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/customize-properties#custom-enum-member-names) to customize the names of individual enum members.
1 parent cc09b5f commit 495809a

File tree

5 files changed

+12
-7
lines changed

5 files changed

+12
-7
lines changed

Directory.Packages.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
1414
<PackageVersion Include="NodaTime" Version="3.2.2" />
1515
<PackageVersion Include="NSwag.Core.Yaml" Version="14.0.0" />
16-
<PackageVersion Include="System.Text.Json" Version="8.0.5" />
16+
<PackageVersion Include="System.Text.Json" Version="9.0.9" />
1717
<PackageVersion Include="Verify.XunitV3" Version="30.5.0" />
1818
<PackageVersion Include="xunit.v3" Version="3.0.0" />
1919
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.3" />

src/NJsonSchema.CodeGeneration.CSharp.Tests/NJsonSchema.CodeGeneration.CSharp.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<ItemGroup>
1818
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" />
1919
<PackageReference Include="Microsoft.NET.Test.Sdk" />
20+
<PackageReference Include="System.Text.Json" />
2021
<PackageReference Include="Verify.XunitV3" />
2122
<PackageReference Include="xunit.v3" />
2223
<PackageReference Include="xunit.runner.visualstudio" PrivateAssets="all" />

src/NJsonSchema.CodeGeneration.CSharp.Tests/Snapshots/EnumTests.When_enum_is_string_then_generic_StringEnumConverter_is_used_nullable=False.verified.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ namespace MyNamespace
2020
public enum MyClassSize
2121
{
2222

23-
[System.Runtime.Serialization.EnumMember(Value = @"small")]
23+
[System.Text.Json.Serialization.JsonStringEnumMemberName(@"small")]
2424
Small = 0,
2525

2626

27-
[System.Runtime.Serialization.EnumMember(Value = @"medium")]
27+
[System.Text.Json.Serialization.JsonStringEnumMemberName(@"medium")]
2828
Medium = 1,
2929

3030

31-
[System.Runtime.Serialization.EnumMember(Value = @"large")]
31+
[System.Text.Json.Serialization.JsonStringEnumMemberName(@"large")]
3232
Large = 2,
3333

3434

src/NJsonSchema.CodeGeneration.CSharp.Tests/Snapshots/EnumTests.When_enum_is_string_then_generic_StringEnumConverter_is_used_nullable=True.verified.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ namespace MyNamespace
2020
public enum MyClassSize
2121
{
2222

23-
[System.Runtime.Serialization.EnumMember(Value = @"small")]
23+
[System.Text.Json.Serialization.JsonStringEnumMemberName(@"small")]
2424
Small = 0,
2525

2626

27-
[System.Runtime.Serialization.EnumMember(Value = @"medium")]
27+
[System.Text.Json.Serialization.JsonStringEnumMemberName(@"medium")]
2828
Medium = 1,
2929

3030

31-
[System.Runtime.Serialization.EnumMember(Value = @"large")]
31+
[System.Text.Json.Serialization.JsonStringEnumMemberName(@"large")]
3232
Large = 2,
3333

3434

src/NJsonSchema.CodeGeneration.CSharp/Templates/Enum.liquid

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@
1212
{
1313
{%- for enum in Enums %}
1414
{%- if IsStringEnum -%}
15+
{%- if UseSystemTextJson -%}
16+
[System.Text.Json.Serialization.JsonStringEnumMemberName(@"{{ enum.Value | replace: '"', '""' }}")]
17+
{%- else -%}
1518
[System.Runtime.Serialization.EnumMember(Value = @"{{ enum.Value | replace: '"', '""' }}")]
19+
{%- endif -%}
1620
{%- endif -%}
1721
{%- template Enum.Member.Annotations -%}
1822
{%- if IsEnumAsBitFlags -%}

0 commit comments

Comments
 (0)