protected void ReadPrimitive() { MessagePackObject lastReadData = mUnpacker.LastReadData; if (lastReadData.IsNil) { mReader.SetToken(JsonToken.Null, null); } else if (lastReadData.UnderlyingType == typeof(byte[])) { mReader.SetToken(JsonToken.Bytes, lastReadData.AsBinary()); } else if (lastReadData.UnderlyingType == typeof(bool)) { mReader.SetToken(JsonToken.Boolean, lastReadData.AsBoolean()); } else if (lastReadData.UnderlyingType == typeof(string)) { mReader.SetToken(JsonToken.String, lastReadData.AsString()); } else if (lastReadData.UnderlyingType == typeof(double) || lastReadData.UnderlyingType == typeof(float)) { mReader.SetToken(JsonToken.Float, lastReadData.ToObject()); } else if (lastReadData.UnderlyingType == typeof(MessagePackExtendedTypeObject)) { MessagePackExtendedTypeObject extendedTypeObject = lastReadData.AsMessagePackExtendedTypeObject(); if (extendedTypeObject.TypeCode == KnownExtTypeCode.Timestamp) { mReader.SetToken(JsonToken.Date, lastReadData.AsTimestamp().ToDateTime()); } } else if (lastReadData.IsTypeOf <sbyte>() == true || lastReadData.IsTypeOf <short>() == true || lastReadData.IsTypeOf <ushort>() == true || lastReadData.IsTypeOf <int>() == true || lastReadData.IsTypeOf <uint>() == true || lastReadData.IsTypeOf <long>() == true || lastReadData.IsTypeOf <ulong>() == true) { mReader.SetToken(JsonToken.Integer, lastReadData.ToObject()); } }