Esempio n. 1
0
 static void WriteObject(JsonSerializer serializer, object value)
 {
     serializer.WriteObject (value);
 }
Esempio n. 2
0
 static void WriteMultiDimensionalArray(JsonSerializer serializer, object value)
 {
     var a = value as Array;
     if (a == null) {
         serializer._output.Append ("null");
         return;
     }
     var m = serializer._manager.GetReflectionCache (a.GetType ().GetElementType ()).SerializeMethod;
     serializer.WriteMultiDimensionalArray (m, a);
 }
Esempio n. 3
0
 static void WriteNameValueCollection(JsonSerializer serializer, object value)
 {
     serializer.WriteNameValueCollection ((NameValueCollection)value);
 }
Esempio n. 4
0
 static void WriteUInt64(JsonSerializer serializer, object value)
 {
     serializer._output.Append (ValueConverter.UInt64ToString ((ulong)value));
 }
Esempio n. 5
0
 static void WriteBoolean(JsonSerializer serializer, object value)
 {
     serializer._output.Append ((bool)value ? "true" : "false");
 }
Esempio n. 6
0
 static void WriteString(JsonSerializer serializer, object value)
 {
     if (value == null) {
         serializer._output.Append ("null");
         return;
     }
     var s = (string)value;
     if (s.Length == 0) {
         serializer._output.Append ("\"\"");
         return;
     }
     if (serializer._useEscapedUnicode) {
         WriteStringEscapeUnicode (serializer._output, s);
     }
     else {
         WriteString (serializer._output, s);
     }
 }
Esempio n. 7
0
 static void WriteTimeSpan(JsonSerializer serializer, object timeSpan)
 {
     serializer.WriteStringFast ((((TimeSpan)timeSpan).ToString ()));
 }
Esempio n. 8
0
        static void WriteDateTime(JsonSerializer serializer, object value)
        {
            // datetime format standard : yyyy-MM-dd HH:mm:ss
            var dt = (DateTime)value;
            var parameter = serializer._params;
            var output = serializer._output;
            if (parameter.UseUTCDateTime)
                dt = dt.ToUniversalTime ();

            output.Append ('"');
            output.Append (ValueConverter.ToFixedWidthString (dt.Year, 4));
            output.Append ('-');
            output.Append (ValueConverter.ToFixedWidthString (dt.Month, 2));
            output.Append ('-');
            output.Append (ValueConverter.ToFixedWidthString (dt.Day, 2));
            output.Append ('T'); // strict ISO date compliance
            output.Append (ValueConverter.ToFixedWidthString (dt.Hour, 2));
            output.Append (':');
            output.Append (ValueConverter.ToFixedWidthString (dt.Minute, 2));
            output.Append (':');
            output.Append (ValueConverter.ToFixedWidthString (dt.Second, 2));
            if (parameter.DateTimeMilliseconds) {
                output.Append ('.');
                output.Append (ValueConverter.ToFixedWidthString (dt.Millisecond, 3));
            }
            if (parameter.UseUTCDateTime)
                output.Append ('Z');

            output.Append ('\"');
        }
Esempio n. 9
0
 static void WriteDecimal(JsonSerializer serializer, object value)
 {
     serializer._output.Append (((decimal)value).ToString (NumberFormatInfo.InvariantInfo));
 }
Esempio n. 10
0
 static void WriteDataSet(JsonSerializer serializer, object value)
 {
     serializer.WriteDataset ((DataSet)value);
 }
Esempio n. 11
0
 static void WriteDataTable(JsonSerializer serializer, object value)
 {
     serializer.WriteDataTable ((DataTable)value);
 }
Esempio n. 12
0
 static void WriteCustom(JsonSerializer serializer, object value)
 {
     serializer.WriteCustom (value);
 }
Esempio n. 13
0
 static void WriteChar(JsonSerializer serializer, object value)
 {
     WriteString (serializer, ((char)value).ToString ());
 }
Esempio n. 14
0
 static void WriteByteArray(JsonSerializer serializer, object value)
 {
     serializer.WriteStringFast (Convert.ToBase64String ((byte[])value));
 }
Esempio n. 15
0
 static void WriteSByte(JsonSerializer serializer, object value)
 {
     serializer._output.Append (ValueConverter.Int32ToString ((sbyte)value));
 }
Esempio n. 16
0
 static void WriteDictionary(JsonSerializer serializer, object value)
 {
     if (serializer._params.KVStyleStringDictionary == false) {
         if (value is IDictionary<string, object>) {
             serializer.WriteStringDictionary ((IDictionary<string, object>)value);
             return;
         }
         else if (value is IDictionary
             && value.GetType ().IsGenericType
             && typeof (string).Equals (value.GetType ().GetGenericArguments ()[0])) {
             serializer.WriteStringDictionary ((IDictionary)value);
             return;
         }
     #if NET_40_OR_GREATER
         else if (value is System.Dynamic.ExpandoObject) {
             serializer.WriteStringDictionary ((IDictionary<string, object>)value);
             return;
         }
     #endif
     }
     if (value is IDictionary)
         serializer.WriteKvStyleDictionary ((IDictionary)value);
 }
Esempio n. 17
0
 static void WriteSingle(JsonSerializer serializer, object value)
 {
     serializer._output.Append (((float)value).ToString (NumberFormatInfo.InvariantInfo));
 }
Esempio n. 18
0
 static void WriteEnum(JsonSerializer serializer, object value)
 {
     Enum e = (Enum)value;
     // TODO : optimize enum write
     if (serializer._params.UseValuesOfEnums) {
         serializer._output.Append (Convert.ToInt64 (e).ToString (NumberFormatInfo.InvariantInfo));
         return;
     }
     var n = serializer._manager.GetEnumName (e);
     if (n != null) {
         serializer.WriteStringFast (n);
     }
     else {
         serializer._output.Append (Convert.ToInt64 (e).ToString (NumberFormatInfo.InvariantInfo));
     }
 }
Esempio n. 19
0
 static void WriteStringDictionary(JsonSerializer serializer, object value)
 {
     serializer.WriteSD ((StringDictionary)value);
 }
Esempio n. 20
0
 static void WriteGuid(JsonSerializer serializer, object guid)
 {
     if (serializer._params.UseFastGuid == false)
         serializer.WriteStringFast (((Guid)guid).ToString ());
     else
         serializer.WriteBytes (((Guid)guid).ToByteArray ());
 }
Esempio n. 21
0
 static void WriteUInt16(JsonSerializer serializer, object value)
 {
     serializer._output.Append (ValueConverter.Int32ToString ((ushort)value));
 }
Esempio n. 22
0
 static void WriteKeyValuePair(JsonSerializer serializer, object value)
 {
     var p = (KeyValuePair<string, string>)value;
     serializer._output.Append ('{');
     serializer.WriteStringFast (p.Key);
     serializer._output.Append (':');
     WriteString (serializer, p.Value);
     serializer._output.Append ('}');
 }
Esempio n. 23
0
 static void WriteUnknown(JsonSerializer serializer, object value)
 {
     serializer.WriteValue (value);
 }
Esempio n. 24
0
        static void WriteArray(JsonSerializer serializer, object value)
        {
            IEnumerable array = value as IEnumerable;
            var o = serializer._output;
            if (array == null) {
                o.Append ("null");
                return;
            }
            //if (_params.SerializeEmptyCollections == false) {
            //	var c = array as ICollection;
            //	if (c.Count == 0) {
            //		return;
            //	}
            //}

            var list = array as IList;
            if (list != null) {
                var c = list.Count;
                if (c == 0) {
                    o.Append ("[]");
                    return;
                }

                var t = list.GetType ();
                if (t.IsArray && t.GetArrayRank () > 1) {
                    WriteMultiDimensionalArray (serializer, list);
                    return;
                }
                var d = serializer._manager.GetReflectionCache (t);
                var w = d.ItemSerializer;
                if (w != null) {
                    o.Append ('[');
                    var v = list[0];
                    if (v == null) {
                        o.Append ("null");
                    }
                    else {
                        w (serializer, v);
                    }
                    for (int i = 1; i < c; i++) {
                        o.Append (',');
                        v = list[i];
                        if (v == null) {
                            o.Append ("null");
                        }
                        else {
                            w (serializer, v);
                        }
                    }
                    o.Append (']');
                    return;
                }

                o.Append ('[');
                serializer.WriteValue (list[0]);
                for (int i = 1; i < c; i++) {
                    o.Append (',');
                    serializer.WriteValue (list[i]);
                }
                o.Append (']');
                return;
            }

            var pendingSeperator = false;
            o.Append ('[');
            foreach (object obj in array) {
                if (pendingSeperator) o.Append (',');

                serializer.WriteValue (obj);

                pendingSeperator = true;
            }
            o.Append (']');
        }