diff --git a/ICD.Common.Utils/Extensions/JsonReaderExtensions.cs b/ICD.Common.Utils/Extensions/JsonReaderExtensions.cs
index e50a120..1a5f128 100644
--- a/ICD.Common.Utils/Extensions/JsonReaderExtensions.cs
+++ b/ICD.Common.Utils/Extensions/JsonReaderExtensions.cs
@@ -146,6 +146,9 @@ namespace ICD.Common.Utils.Extensions
if (extends == null)
throw new ArgumentNullException("extends");
+ if (!extends.TokenType.IsPrimitive())
+ throw new FormatException("Expected primitive token type but got " + extends.TokenType);
+
return extends.Value == null ? null : extends.Value.ToString();
}
diff --git a/ICD.Common.Utils/Extensions/JsonTokenExtensions.cs b/ICD.Common.Utils/Extensions/JsonTokenExtensions.cs
new file mode 100644
index 0000000..a2ab88f
--- /dev/null
+++ b/ICD.Common.Utils/Extensions/JsonTokenExtensions.cs
@@ -0,0 +1,45 @@
+using System;
+using Newtonsoft.Json;
+
+namespace ICD.Common.Utils.Extensions
+{
+ public static class JsonTokenExtensions
+ {
+ ///
+ /// Returns true if the JsonToken respresents a single data value
+ /// rather than a complex type such as an object or an array.
+ ///
+ ///
+ ///
+ public static bool IsPrimitive(this JsonToken extends)
+ {
+ switch (extends)
+ {
+ case JsonToken.None:
+ case JsonToken.StartObject:
+ case JsonToken.StartArray:
+ case JsonToken.StartConstructor:
+ case JsonToken.EndObject:
+ case JsonToken.EndArray:
+ case JsonToken.EndConstructor:
+ case JsonToken.Undefined:
+ return false;
+
+ case JsonToken.PropertyName:
+ case JsonToken.Comment:
+ case JsonToken.Raw:
+ case JsonToken.Integer:
+ case JsonToken.Float:
+ case JsonToken.String:
+ case JsonToken.Boolean:
+ case JsonToken.Null:
+ case JsonToken.Date:
+ case JsonToken.Bytes:
+ return true;
+
+ default:
+ throw new ArgumentOutOfRangeException("extends");
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj b/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj
index 7939358..1ba061a 100644
--- a/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj
+++ b/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj
@@ -110,6 +110,7 @@
+