Skip to content

Commit 94b6a62

Browse files
authored
Merge pull request #132 from jasolko/deserialize-enums
fix(deserialization): deserialize enums
2 parents 111773f + d45fe14 commit 94b6a62

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

src/JsonApiDotNetCore/Internal/TypeHelper.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ public static object ConvertType(object value, Type type)
2222
if (type == typeof(DateTimeOffset))
2323
return DateTimeOffset.Parse(stringValue);
2424

25+
if (type.GetTypeInfo().IsEnum)
26+
return Enum.Parse(type, stringValue);
27+
2528
return Convert.ChangeType(stringValue, type);
2629
}
2730
catch (Exception e)

src/JsonApiDotNetCore/JsonApiDotNetCore.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<VersionPrefix>2.0.8</VersionPrefix>
3+
<VersionPrefix>2.0.9</VersionPrefix>
44
<TargetFrameworks>netstandard1.6</TargetFrameworks>
55
<AssemblyName>JsonApiDotNetCore</AssemblyName>
66
<PackageId>JsonApiDotNetCore</PackageId>
@@ -21,4 +21,4 @@
2121
<PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.2" />
2222
<PackageReference Include="System.ValueTuple" Version="4.3.1" />
2323
</ItemGroup>
24-
</Project>
24+
</Project>

test/UnitTests/Internal/TypeHelper_Tests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,23 @@ public void Bad_DateTimeOffset_String_Throws()
3030
// assert
3131
Assert.Throws<FormatException>(() => TypeHelper.ConvertType(formattedString, typeof(DateTimeOffset)));
3232
}
33+
34+
[Fact]
35+
public void Can_Convert_Enums()
36+
{
37+
// arrange
38+
var formattedString = "1";
39+
40+
// act
41+
var result = TypeHelper.ConvertType(formattedString, typeof(TestEnum));
42+
43+
// assert
44+
Assert.Equal(TestEnum.Test, result);
45+
}
46+
47+
public enum TestEnum
48+
{
49+
Test = 1
50+
}
3351
}
3452
}

0 commit comments

Comments
 (0)