public void Write(object obj, JsonWriterArgs args) { var value = (char)obj; var writer = args.Writer; writer.Write('"'); if (value < 256) { var escape = SpecialCharacters[value]; if (escape == null) { writer.Write(value); } else if (args.FilterSpecialCharacter == false) { writer.Write(escape); } } else if (args.CastUnicode) { writer.Write(SpecialCharacters[value]); } else { writer.Write(value); } writer.Write('"'); }
public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var writer = args.Writer; var value = (SerializationInfo)obj; var comma = new CommaHelper(writer); foreach (var item in value) { if (args.IgnoreNullMember) { if (item.Value == null || item.Value is DBNull) { continue; } } comma.AppendCommaIgnoreFirst(); args.WriterContainer.GetWriter <string>().Write(item.Name, args); writer.Write(':'); args.WriteCheckLoop(item.Value, null); } }
public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var writer = TypeService.IsImmutable <T>() ? args.WriterContainer.GetWriter <T>() : null; var list = (IList <T>)obj; if (list.Count == 0) { args.BeginArray(); args.EndArray(); return; } args.BeginArray(); args.WriteCheckLoop(list[0], writer); for (int i = 1, length = list.Count; i < length; i++) { args.Common(); args.WriteCheckLoop(list[i], writer); } args.EndArray(); }
public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var writer = args.Writer; args.BeginObject(); var comma = new CommaHelper(writer); var ee = ((IDictionary)obj).GetEnumerator(); while (ee.MoveNext()) { var value = ee.Value; if (args.IgnoreNullMember) { if (value == null || value is DBNull) { continue; } } comma.AppendCommaIgnoreFirst(); args.WriterContainer.GetWriter <string>().Write(ee.Key.To <string>(), args); writer.Write(':'); args.WriteCheckLoop(value, null); } args.EndObject(); }
public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var writer = args.Writer; var list = (IList)obj; if (list.Count == 0) { writer.Write("[]"); return; } args.BeginArray(); args.WriteCheckLoop(list[0], null); for (int i = 1, length = list.Count; i < length; i++) { args.Common(); args.WriteCheckLoop(list[i], null); } args.EndArray(); }
/// <exception cref="IOException"> 发生 I/O 错误。</exception> /// <exception cref="ObjectDisposedException"> <see cref="T:System.IO.TextWriter" /> 是关闭的。</exception> public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var writer = TypeService.IsImmutable <TValue>() ? args.WriterContainer.GetWriter <TValue>() : null; args.BeginObject(); var comma = new CommaHelper(args.Writer); foreach (var item in (IDictionary <TKey, TValue>)obj) { var value = item.Value; if (args.IgnoreNullMember) { if (value == null || value is DBNull) { continue; } } comma.AppendCommaIgnoreFirst(); args.WriterContainer.GetWriter <string>().Write(item.Key as string ?? item.Key.To <string>(), args); args.Colon(); args.WriteCheckLoop(value, writer); } args.EndObject(); }
public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var writer = args.Writer; var value = (NameValueCollection)obj; var comma = new CommaHelper(writer); args.BeginObject(); for (int i = 0, length = value.Count; i < length; i++) { var name = value.GetKey(i); var str = value.Get(i); if (args.IgnoreNullMember) { if (str == null) { continue; } } comma.AppendCommaIgnoreFirst(); args.WriterContainer.GetWriter <string>().Write(name, args); writer.Write(':'); args.WriterContainer.GetWriter <string>().Write(str, args); } args.EndObject(); }
/// <summary> /// </summary> /// <param name="obj"></param> /// <param name="args"></param> /// <exception cref="InvalidOperationException">IDataReader已经关闭</exception> public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var reader = (IDataReader)obj; if (reader.IsClosed) { throw new InvalidOperationException("IDataReader已经关闭"); } args.BeginArray(); if (reader.FieldCount == 1) { var comma = new CommaHelper(args.Writer); while (reader.Read()) { var value = reader.GetValue(0); if (args.IgnoreNullMember) { continue; } if (value == null || value is DBNull) { if (args.IgnoreNullMember) { continue; } args.WriterContainer.GetNullWriter().Write(null, args); } else { args.WriterContainer.GetWriter(value.GetType()).Write(value, args); } comma.AppendCommaIgnoreFirst(); } } else { var writer = args.WriterContainer.GetWriter(Type); if (reader.Read()) { writer.Write(reader, args); while (reader.Read()) { args.Common(); writer.Write(reader, args); } } } args.EndArray(); }
public void Write(object obj, JsonWriterArgs args) { var value = (Guid)obj; var str = value.ToString(args.GuidFormatString); if (args.GuidToUpper) { str = str.ToUpperInvariant(); } args.WriterContainer.GetWriter <string>().Write(str, args); }
public void Write(object obj, JsonWriterArgs args) { var value = (Enum)obj; if (args.EnumToNumber) { args.WriterContainer.GetWriter(_UnderlyingType).Write(value, args); } else { args.WriterContainer.GetWriter <string>().Write(value.ToString("g"), args); } }
/// <summary> /// 将对象转换为Json字符串 /// </summary> /// <param name="obj"> </param> /// <param name="settings"> 序列化Json字符串时使用的设置参数 </param> public static string ToJsonString(this object obj, JsonBuilderSettings settings) { using (var buffer = new QuickStringWriter(4096)) { var args = new JsonWriterArgs(WriterContainer, buffer, settings); if (obj == null || obj is DBNull) { WriterContainer.GetNullWriter().Write(null, args); return(buffer.ToString()); } var writer = WriterContainer.GetWriter(obj.GetType()); writer.Write(obj, args); return(buffer.ToString()); } }
public void Write(object obj, JsonWriterArgs args) { var writer = args.Writer; if (obj == null) { writer.Write("null"); return; } if (Wrap == null) { throw new NotImplementedException($"无法获取 {nameof(Wrap.Writer)}"); } Wrap.Writer.Write(obj, args); }
public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var table = (DataTable)obj; var writer = args.Writer; var comma1 = new CommaHelper(writer); var columns = table.Columns; var length = columns.Count; args.BeginArray(); for (int j = 0, count = table.Rows.Count; j < count; j++) { args.BeginObject(); comma1.AppendCommaIgnoreFirst(); var row = table.Rows[j]; var comma = new CommaHelper(writer); for (var i = 0; i < length; i++) { var column = columns[i]; if (args.IgnoreNullMember) { if (row.IsNull(column)) { continue; } } comma.AppendCommaIgnoreFirst(); args.WriterContainer.GetWriter <string>().Write(column.ColumnName, args); writer.Write(':'); if (row.IsNull(column)) { args.WriterContainer.GetNullWriter().Write(null, args); } else { var value = row[column]; args.WriterContainer.GetWriter(value.GetType()).Write(value, args); } } args.EndObject(); } args.EndArray(); }
/// <exception cref="SecurityException">调用方没有所要求的权限。</exception> public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var value = (ISerializable)obj; var info = new SerializationInfo(obj.GetType(), _Converter); value.GetObjectData(info, (new StreamingContext(StreamingContextStates.All, args))); var writer = args.WriterContainer.GetWriter <SerializationInfo>(); writer.Write(info, args); }
public void Write(object obj, JsonWriterArgs args) { var value = (sbyte)obj; var writer = args.Writer; if (args.QuotWrapNumber) { writer.Write('"'); writer.Write(value); writer.Write('"'); } else { writer.Write(value); } }
public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var view = (DataView)obj; var writer = args.Writer; var comma1 = new CommaHelper(writer); var columns = (view.Table ?? view.ToTable()).Columns; var length = columns.Count; args.BeginArray(); for (int j = 0, count = view.Count; j < count; j++) { comma1.AppendCommaIgnoreFirst(); var row = view[j]; var comma = new CommaHelper(writer); for (var i = 0; i < length; i++) { var column = columns[i]; var value = row[i]; if (args.IgnoreNullMember) { if (value == null || value is DBNull) { continue; } } comma.AppendCommaIgnoreFirst(); args.WriterContainer.GetWriter <string>().Write(column.ColumnName, args); writer.Write(':'); if (value == null || value is DBNull) { args.WriterContainer.GetNullWriter().Write(null, args); } else { args.WriterContainer.GetWriter(value.GetType()).Write(value, args); } } } args.EndArray(); }
public void Write(object obj, JsonWriterArgs args) { var obj1 = ((IFormatProvider)obj).GetFormat(typeof(Json)); if (obj1 != null) { args.WriteCheckLoop(obj1, null); } else if (Count == 0) { args.WriterContainer.GetNullWriter().Write(null, args); } else { this[0].Writer.Write(obj, args); } }
public void Write(object obj, JsonWriterArgs args) { var value = (DateTime)obj; var mode = 0; //0:empty 1:date 2:time 3:datetime if (args.FormatDate && value > _OnlyTime) { mode |= 1; } if (args.FormatTime) { if (args.IgnoreEmptyTime && value.Millisecond == 0 && value.Hour == 0 && value.Minute == 0 && value.Second == 0) { } else { mode |= 2; } } switch (mode) { case 1: args.WriterContainer.GetWriter <string>().Write(value.ToString(args.DateFormatString ?? "yyyy-MM-dd"), args); break; case 2: args.WriterContainer.GetWriter <string>().Write(value.ToString(args.TimeFormatString ?? "HH:mm:ss"), args); break; case 3: args.WriterContainer.GetWriter <string>().Write( value.ToString(args.DateTimeFormatString ?? "yyyy-MM-dd HH:mm:ss"), args); break; default: args.WriterContainer.GetWriter <string>().Write("", args); break; } }
public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var writer = args.Writer; var value = (DynamicObject)obj; var memberNames = value.GetDynamicMemberNames(); var names = memberNames as string[] ?? memberNames.ToArray(); if (names.Length == 0) { args.WriterContainer.GetWriter <string>().Write(obj, args); return; } var comma = new CommaHelper(writer); args.BeginObject(); foreach (var name in names) { object val; if (value.TryGetMember(new MyGetMemberBinder(name), out val) == false && value.TryGetIndex(new MyGetIndexBinder(name), new object[] { name }, out val) == false) { continue; } if (args.IgnoreNullMember) { if (val == null || val is DBNull) { continue; } } comma.AppendCommaIgnoreFirst(); args.WriterContainer.GetWriter <string>().Write(name, args); args.Colon(); args.WriteCheckLoop(val, null); } args.EndObject(); }
public void Write(object obj, JsonWriterArgs args) { var value = (IObjectReference)obj; var obj1 = value.GetRealObject(new StreamingContext(StreamingContextStates.All, args)); if (obj1 != null) { args.WriteCheckLoop(obj1, null); } else if (Count == 0) { args.WriterContainer.GetNullWriter().Write(null, args); } else { this[0].Writer.Write(obj, args); } }
public void Write(object obj, JsonWriterArgs args) { var value = (bool)obj; if (args.BooleanToNumber) { args.WriterContainer.GetWriter <int>().Write(value ? 1 : 0, args); } else if (args.QuotWrapBoolean) { args.Writer.Write('"'); args.Writer.Write(value); args.Writer.Write('"'); } else { args.Writer.Write(value); } }
public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var ds = (DataSet)obj; var writer = args.Writer; var comma = new CommaHelper(writer); args.BeginObject(); for (int i = 0, length = ds.Tables.Count; i < length; i++) { comma.AppendCommaIgnoreFirst(); var table = ds.Tables[i]; args.WriterContainer.GetWriter <string>().Write(table.TableName, args); writer.Write(':'); args.WriterContainer.GetWriter(Type).Write(table, args); } args.EndObject(); }
public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var writer = args.Writer; args.BeginArray(); var ee = (IEnumerator)obj; if (ee.MoveNext()) { args.WriteCheckLoop(ee.Current, null); while (ee.MoveNext()) { args.Common(); args.WriteCheckLoop(ee.Current, null); } } args.EndArray(); }
public void Write(object obj, JsonWriterArgs args) { if (obj == null) { args.WriterContainer.GetNullWriter().Write(null, args); return; } var wirter = TypeService.IsImmutable <T>() ? args.WriterContainer.GetWriter <T>() : null; args.BeginArray(); var ee = ((IEnumerable <T>)obj).GetEnumerator(); if (ee.MoveNext()) { args.WriteCheckLoop(ee.Current, wirter); while (ee.MoveNext()) { args.Common(); args.WriteCheckLoop(ee.Current, wirter); } } args.EndArray(); }
public void Write(object obj, JsonWriterArgs args) { var value = (Version)obj; args.WriterContainer.GetWriter <string>().Write(value.ToString(), args); }
private static void Write(ref CommaHelper comma, JsonMember member, object value, JsonWriterArgs args) { if (value == null || value is DBNull) { if (args.IgnoreNullMember) { return; } comma.AppendCommaIgnoreFirst(); args.Writer.Write(member.EncodedJsonName); args.Colon(); args.WriterContainer.GetNullWriter().Write(null, args); } else { comma.AppendCommaIgnoreFirst(); args.Writer.Write(member.EncodedJsonName); args.Colon(); args.WriteCheckLoop(value, null); } }
public void Write(object obj, JsonWriterArgs args) { if (obj == null || obj is DBNull) { return; } var writer = args.Writer; args.BeginObject(); var jtype = JsonType.Get(obj.GetType()); var ms = jtype.Members; var comma = new CommaHelper(writer); if (args.SerializableType) { writer.Write("\"$Type$\":"); args.WriterContainer.GetWriter <string>().Write(jtype.Type.AssemblyQualifiedName, args); comma.AppendCommaIgnoreFirst(); } var length = args.SerializableField ? ms.Length : jtype.PropertyCount; for (var i = 0; i < length; i++) { var member = ms[i]; if (member.NonSerialized && args.FormatAllMember == false) { continue; } if (member.CanRead == false) { continue; } var value = member.GetValue(obj); if (value == null || value is DBNull) { if (args.IgnoreNullMember) { continue; } comma.AppendCommaIgnoreFirst(); writer.Write(member.EncodedJsonName); writer.Write(':'); args.WriterContainer.GetNullWriter().Write(null, args); } else if (member.MustFormat) { comma.AppendCommaIgnoreFirst(); writer.Write(member.EncodedJsonName); writer.Write(':'); args.WriterContainer.GetWriter <string>().Write(((IFormattable)value).ToString(member.FormatString, member.FormatProvider), args); } else { Write(ref comma, member, value, args); } } args.EndObject(); }
public void Write(object obj, JsonWriterArgs args) { throw new NotImplementedException(); }
/// <exception cref="TypeLoadException"> <seealso cref="IConvertible.GetTypeCode" /> 返回值错误 </exception> public void Write(object obj, JsonWriterArgs args) { var value = (IConvertible)obj; var typecode = value.GetTypeCode(); switch (typecode) { case TypeCode.Decimal: args.WriterContainer.GetWriter <decimal>().Write(value.ToDecimal(CultureInfo.InvariantCulture), args); break; case TypeCode.Double: args.WriterContainer.GetWriter <double>().Write(value.ToDouble(CultureInfo.InvariantCulture), args); break; case TypeCode.Single: args.WriterContainer.GetWriter <float>().Write(value.ToSingle(CultureInfo.InvariantCulture), args); break; case TypeCode.Int16: args.WriterContainer.GetWriter <short>().Write(value.ToInt16(CultureInfo.InvariantCulture), args); break; case TypeCode.Int32: args.WriterContainer.GetWriter <int>().Write(value.ToInt32(CultureInfo.InvariantCulture), args); break; case TypeCode.Int64: args.WriterContainer.GetWriter <long>().Write(value.ToInt64(CultureInfo.InvariantCulture), args); break; case TypeCode.SByte: args.WriterContainer.GetWriter <sbyte>().Write(value.ToSByte(CultureInfo.InvariantCulture), args); break; case TypeCode.Byte: args.WriterContainer.GetWriter <sbyte>().Write(value.ToByte(CultureInfo.InvariantCulture), args); break; case TypeCode.UInt16: args.WriterContainer.GetWriter <ushort>().Write(value.ToUInt16(CultureInfo.InvariantCulture), args); break; case TypeCode.UInt32: args.WriterContainer.GetWriter <uint>().Write(value.ToUInt32(CultureInfo.InvariantCulture), args); break; case TypeCode.UInt64: args.WriterContainer.GetWriter <uint>().Write(value.ToUInt64(CultureInfo.InvariantCulture), args); break; case TypeCode.Object: obj = value.ToType(typeof(object), CultureInfo.InvariantCulture); if (obj == null || obj is DBNull) { args.WriterContainer.GetNullWriter().Write(null, args); } else { args.WriterContainer.GetWriter <object>().Write(obj, args); } break; case TypeCode.Empty: case TypeCode.DBNull: args.WriterContainer.GetNullWriter().Write(null, args); break; case TypeCode.Boolean: args.WriterContainer.GetWriter <bool>().Write(value.ToBoolean(CultureInfo.InvariantCulture), args); break; case TypeCode.Char: args.WriterContainer.GetWriter <char>().Write(value.ToChar(CultureInfo.InvariantCulture), args); break; case TypeCode.DateTime: args.WriterContainer.GetWriter <DateTime>() .Write(value.ToDateTime(CultureInfo.InvariantCulture), args); break; case TypeCode.String: args.WriterContainer.GetWriter <string>().Write(value.ToString(CultureInfo.InvariantCulture), args); break; default: throw new TypeLoadException($"TypeCode:{typecode} 未知"); } }
public void Write(object obj, JsonWriterArgs args) => args.WriterContainer.GetWriter <T>().Write(obj, args);