private static void DeserializeAndAddProperty(
            TypeMarker typeMarker,
            byte[] serializedBytes,
            JObject jObject,
            string key)
        {
            SqlSerializerFactory sqlSerializerFactory = new SqlSerializerFactory();

            // UTF-8 encoding.
            SqlVarCharSerializer sqlVarCharSerializer = new SqlVarCharSerializer(size: -1, codePageCharacterEncoding: 65001);

            switch (typeMarker)
            {
            case TypeMarker.Boolean:
                jObject.Add(key, sqlSerializerFactory.GetDefaultSerializer <bool>().Deserialize(serializedBytes));
                break;

            case TypeMarker.Double:
                jObject.Add(key, sqlSerializerFactory.GetDefaultSerializer <double>().Deserialize(serializedBytes));
                break;

            case TypeMarker.Long:
                jObject.Add(key, sqlSerializerFactory.GetDefaultSerializer <long>().Deserialize(serializedBytes));
                break;

            case TypeMarker.String:
                jObject.Add(key, sqlVarCharSerializer.Deserialize(serializedBytes));
                break;

            case TypeMarker.Array:
                jObject.Add(key, JsonConvert.DeserializeObject <JArray>(sqlVarCharSerializer.Deserialize(serializedBytes)));
                break;

            case TypeMarker.Object:
                jObject.Add(key, JsonConvert.DeserializeObject <JObject>(sqlVarCharSerializer.Deserialize(serializedBytes)));
                break;

            default:
                Debug.Fail(string.Format("Unexpected type marker {0}", typeMarker));
                break;
            }
        }
Ejemplo n.º 2
0
        private static void DeserializeAndAddProperty(
            TypeMarker typeMarker,
            byte[] serializedBytes,
            JObject jObject,
            string key)
        {
            switch (typeMarker)
            {
            case TypeMarker.Boolean:
                jObject.Add(key, SqlSerializerFactory.GetDefaultSerializer <bool>().Deserialize(serializedBytes));
                break;

            case TypeMarker.Double:
                jObject.Add(key, SqlSerializerFactory.GetDefaultSerializer <double>().Deserialize(serializedBytes));
                break;

            case TypeMarker.Long:
                jObject.Add(key, SqlSerializerFactory.GetDefaultSerializer <long>().Deserialize(serializedBytes));
                break;

            case TypeMarker.String:
                jObject.Add(key, SqlVarCharSerializer.Deserialize(serializedBytes));
                break;

            case TypeMarker.Array:
                jObject.Add(key, JsonConvert.DeserializeObject <JArray>(SqlVarCharSerializer.Deserialize(serializedBytes), JsonSerializerSettings));
                break;

            case TypeMarker.Object:
                jObject.Add(key, JsonConvert.DeserializeObject <JObject>(SqlVarCharSerializer.Deserialize(serializedBytes), JsonSerializerSettings));
                break;

            default:
                Debug.Fail(string.Format("Unexpected type marker {0}", typeMarker));
                break;
            }
        }