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 = 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(); }
/// <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) { 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(); }
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) { 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(); }
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) { 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 || 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(); }