From 8ec6cb89ca48c3b641d6e549669533f638711c9d Mon Sep 17 00:00:00 2001 From: Chris Santero Date: Wed, 7 Jan 2015 15:41:23 -0500 Subject: [PATCH] serialize enums --- JSONAPI.Tests/Json/JsonApiMediaFormaterTests.cs | 7 +++++++ JSONAPI/Json/JsonApiFormatter.cs | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/JSONAPI.Tests/Json/JsonApiMediaFormaterTests.cs b/JSONAPI.Tests/Json/JsonApiMediaFormaterTests.cs index fe2c7e96..94490d44 100644 --- a/JSONAPI.Tests/Json/JsonApiMediaFormaterTests.cs +++ b/JSONAPI.Tests/Json/JsonApiMediaFormaterTests.cs @@ -73,6 +73,11 @@ public void SetupModels() } + private enum TestEnum + { + + } + [TestMethod] public void CanWritePrimitiveTest() { @@ -89,6 +94,8 @@ public void CanWritePrimitiveTest() Assert.IsTrue(formatter.CanWriteTypeAsPrimitive(typeof(DateTime?)), "CanWriteTypeAsPrimitive returned wrong answer for nullable DateTime!"); Assert.IsTrue(formatter.CanWriteTypeAsPrimitive(typeof(DateTimeOffset?)), "CanWriteTypeAsPrimitive returned wrong answer for nullable DateTimeOffset!"); Assert.IsTrue(formatter.CanWriteTypeAsPrimitive(typeof(Guid?)), "CanWriteTypeAsPrimitive returned wrong answer for nullable Guid!"); + Assert.IsTrue(formatter.CanWriteTypeAsPrimitive(typeof(TestEnum)), "CanWriteTypeAsPrimitive returned wrong answer for enum!"); + Assert.IsTrue(formatter.CanWriteTypeAsPrimitive(typeof(TestEnum?)), "CanWriteTypeAsPrimitive returned wrong answer for nullable enum!"); Assert.IsFalse(formatter.CanWriteTypeAsPrimitive(typeof(Object)), "CanWriteTypeAsPrimitive returned wrong answer for Object!"); } diff --git a/JSONAPI/Json/JsonApiFormatter.cs b/JSONAPI/Json/JsonApiFormatter.cs index 774c7c41..5bc1fa79 100644 --- a/JSONAPI/Json/JsonApiFormatter.cs +++ b/JSONAPI/Json/JsonApiFormatter.cs @@ -55,6 +55,10 @@ public bool CanWriteTypeAsPrimitive(Type objectType) || typeof(System.DateTime?).IsAssignableFrom(objectType) || typeof(System.DateTimeOffset?).IsAssignableFrom(objectType) || typeof(String).IsAssignableFrom(objectType) + || objectType.IsEnum + || (objectType.IsGenericType && + objectType.GetGenericTypeDefinition() == typeof(Nullable<>) && + objectType.GetGenericArguments()[0].IsEnum) ) return true; else return false;