/// <summary> /// 序列化 /// </summary> /// <param name="reader"></param> public void Serialize(DbDataReader reader) { if (this.isValue) { serializer.CharStream.Write(','); } else { this.isValue = true; } int fieldCount = reader.FieldCount; bool isValue = false; if (fieldCount != 0) { for (int index = 0; index != fieldCount; ++index) { if (reader.IsDBNull(index)) { if (!isIgnoreNull) { if (isValue) { serializer.CustomWriteNextName(reader.GetName(index)); } else { serializer.CustomWriteFirstName(reader.GetName(index)); isValue = true; } serializer.CharStream.WriteJsonNull(); } } else { if (isValue) { serializer.CustomWriteNextName(reader.GetName(index)); } else { serializer.CustomWriteFirstName(reader.GetName(index)); isValue = true; } object value = reader.GetValue(index); Action <AutoCSer.Json.Serializer, object> typeSerializer; if (serializers == null) { typeSerializer = typeSerializers[value.GetType()]; } else { if (serializers.Length == 0) { serializers = new Action <Json.Serializer, object> [reader.FieldCount]; } if ((typeSerializer = serializers[index]) == null) { serializers[index] = typeSerializer = typeSerializers[value.GetType()]; } } typeSerializer(serializer, value); } } } if (isValue) { serializer.CustomObjectEnd(); } else { serializer.CharStream.WriteJsonObject(); } }