static void WriteObject(JsonSerializer serializer, object value) { serializer.WriteObject (value); }
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); }
static void WriteNameValueCollection(JsonSerializer serializer, object value) { serializer.WriteNameValueCollection ((NameValueCollection)value); }
static void WriteUInt64(JsonSerializer serializer, object value) { serializer._output.Append (ValueConverter.UInt64ToString ((ulong)value)); }
static void WriteBoolean(JsonSerializer serializer, object value) { serializer._output.Append ((bool)value ? "true" : "false"); }
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); } }
static void WriteTimeSpan(JsonSerializer serializer, object timeSpan) { serializer.WriteStringFast ((((TimeSpan)timeSpan).ToString ())); }
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 ('\"'); }
static void WriteDecimal(JsonSerializer serializer, object value) { serializer._output.Append (((decimal)value).ToString (NumberFormatInfo.InvariantInfo)); }
static void WriteDataSet(JsonSerializer serializer, object value) { serializer.WriteDataset ((DataSet)value); }
static void WriteDataTable(JsonSerializer serializer, object value) { serializer.WriteDataTable ((DataTable)value); }
static void WriteCustom(JsonSerializer serializer, object value) { serializer.WriteCustom (value); }
static void WriteChar(JsonSerializer serializer, object value) { WriteString (serializer, ((char)value).ToString ()); }
static void WriteByteArray(JsonSerializer serializer, object value) { serializer.WriteStringFast (Convert.ToBase64String ((byte[])value)); }
static void WriteSByte(JsonSerializer serializer, object value) { serializer._output.Append (ValueConverter.Int32ToString ((sbyte)value)); }
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); }
static void WriteSingle(JsonSerializer serializer, object value) { serializer._output.Append (((float)value).ToString (NumberFormatInfo.InvariantInfo)); }
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)); } }
static void WriteStringDictionary(JsonSerializer serializer, object value) { serializer.WriteSD ((StringDictionary)value); }
static void WriteGuid(JsonSerializer serializer, object guid) { if (serializer._params.UseFastGuid == false) serializer.WriteStringFast (((Guid)guid).ToString ()); else serializer.WriteBytes (((Guid)guid).ToByteArray ()); }
static void WriteUInt16(JsonSerializer serializer, object value) { serializer._output.Append (ValueConverter.Int32ToString ((ushort)value)); }
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 ('}'); }
static void WriteUnknown(JsonSerializer serializer, object value) { serializer.WriteValue (value); }
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 (']'); }