private bool Filter(ValueCopyer valueCopyer) { var basicType = valueCopyer.TypeCode; if ((options & JsonFormatterOptions.IgnoreNull) != 0 && basicType == TypeCode.Empty) { return(false); } if ((options & JsonFormatterOptions.IgnoreZero) != 0) { switch (basicType) { case TypeCode.SByte: return(valueCopyer.ReadSByte() != 0); case TypeCode.Int16: return(valueCopyer.ReadInt16() != 0); case TypeCode.Int32: return(valueCopyer.ReadInt32() != 0); case TypeCode.Int64: return(valueCopyer.ReadInt64() != 0); case TypeCode.Byte: return(valueCopyer.ReadByte() != 0); case TypeCode.UInt16: return(valueCopyer.ReadUInt16() != 0); case TypeCode.UInt32: return(valueCopyer.ReadUInt32() != 0); case TypeCode.UInt64: return(valueCopyer.ReadUInt64() != 0); case TypeCode.Single: return(valueCopyer.ReadSingle() != 0); case TypeCode.Double: return(valueCopyer.ReadDouble() != 0); case TypeCode.Decimal: return(valueCopyer.ReadDecimal() != 0); } } if ((options & JsonFormatterOptions.IgnoreEmptyString) != 0 && basicType == TypeCode.String && valueCopyer.ReadString() == string.Empty) { return(false); } return(true); }
/// <summary> /// 读取一个 String 值。 /// </summary> /// <returns>返回一个 string 值</returns> public string ReadString() { dataReader.OnReadValue(key, valueCopyer); return(valueCopyer.ReadString()); }
private bool Filter(ValueCopyer valueCopyer) { var basicType = valueCopyer.GetBasicType(); if ((options & JsonFormatterOptions.MultiReferencingNull) != 0 && (basicType == BasicTypes.Array || basicType == BasicTypes.Object)) { var dataReader = (IDataReader)valueCopyer.Value; var objectId = GetObjectId(dataReader); if (objectId != -1) { valueCopyer.DirectWrite(null); basicType = BasicTypes.Null; } } if ((options & JsonFormatterOptions.IgnoreNull) != 0) { if (basicType == BasicTypes.Null) { return(false); } } if ((options & JsonFormatterOptions.IgnoreZero) != 0) { switch (valueCopyer.GetBasicType()) { case BasicTypes.SByte: return(valueCopyer.ReadSByte() != 0); case BasicTypes.Int16: return(valueCopyer.ReadInt16() != 0); case BasicTypes.Int32: return(valueCopyer.ReadInt32() != 0); case BasicTypes.Int64: return(valueCopyer.ReadInt64() != 0); case BasicTypes.Byte: return(valueCopyer.ReadByte() != 0); case BasicTypes.UInt16: return(valueCopyer.ReadUInt16() != 0); case BasicTypes.UInt32: return(valueCopyer.ReadUInt32() != 0); case BasicTypes.UInt64: return(valueCopyer.ReadUInt64() != 0); case BasicTypes.Single: return(valueCopyer.ReadSingle() != 0); case BasicTypes.Double: return(valueCopyer.ReadDouble() != 0); case BasicTypes.Decimal: return(valueCopyer.ReadDecimal() != 0); } } if ((options & JsonFormatterOptions.IgnoreEmptyString) != 0) { switch (valueCopyer.GetBasicType()) { case BasicTypes.String: return(valueCopyer.ReadString() != ""); } } return(true); }
public bool Filter(ValueCopyer valueCopyer) { var basicType = valueCopyer.TypeCode; if (typeof(TMode) == typeof(JsonSerializeModes.ReferenceMode)) { if (basicType == TypeCode.Object && (Options & (JsonFormatterOptions.MultiReferencingNull | JsonFormatterOptions.LoopReferencingNull)) != 0 && valueCopyer.Value is IDataReader dataReader) { var reference = GetReference(dataReader); if (reference != null && ((Options & JsonFormatterOptions.MultiReferencingNull) != 0 || IsLoopReferencing(reference))) { valueCopyer.DirectWrite(null); basicType = TypeCode.Empty; } } } if ((Options & JsonFormatterOptions.IgnoreNull) != 0 && basicType == TypeCode.Empty) { return(false); } if ((Options & JsonFormatterOptions.IgnoreZero) != 0) { switch (basicType) { case TypeCode.SByte: return(valueCopyer.ReadSByte() != 0); case TypeCode.Int16: return(valueCopyer.ReadInt16() != 0); case TypeCode.Int32: return(valueCopyer.ReadInt32() != 0); case TypeCode.Int64: return(valueCopyer.ReadInt64() != 0); case TypeCode.Byte: return(valueCopyer.ReadByte() != 0); case TypeCode.UInt16: return(valueCopyer.ReadUInt16() != 0); case TypeCode.UInt32: return(valueCopyer.ReadUInt32() != 0); case TypeCode.UInt64: return(valueCopyer.ReadUInt64() != 0); case TypeCode.Single: return(valueCopyer.ReadSingle() != 0); case TypeCode.Double: return(valueCopyer.ReadDouble() != 0); case TypeCode.Decimal: return(valueCopyer.ReadDecimal() != 0); } } if ((Options & JsonFormatterOptions.IgnoreEmptyString) != 0 && basicType == TypeCode.String && valueCopyer.ReadString() == string.Empty) { return(false); } return(true); }
private bool Filter(ValueCopyer valueCopyer) { var basicType = valueCopyer.TypeCode; if ((options & (JsonFormatterOptions.MultiReferencingNull | JsonFormatterOptions.LoopReferencingException | JsonFormatterOptions.LoopReferencingNull)) != 0 && basicType == TypeCode.Object && valueCopyer.Value is IDataReader reader && ContainsOrSaveReference(reader)) { valueCopyer.DirectWrite(null); basicType = TypeCode.Empty; } if ((options & JsonFormatterOptions.IgnoreNull) != 0 && basicType == TypeCode.Empty) { return(false); } if ((options & JsonFormatterOptions.IgnoreZero) != 0) { switch (basicType) { case TypeCode.SByte: return(valueCopyer.ReadSByte() != 0); case TypeCode.Int16: return(valueCopyer.ReadInt16() != 0); case TypeCode.Int32: return(valueCopyer.ReadInt32() != 0); case TypeCode.Int64: return(valueCopyer.ReadInt64() != 0); case TypeCode.Byte: return(valueCopyer.ReadByte() != 0); case TypeCode.UInt16: return(valueCopyer.ReadUInt16() != 0); case TypeCode.UInt32: return(valueCopyer.ReadUInt32() != 0); case TypeCode.UInt64: return(valueCopyer.ReadUInt64() != 0); case TypeCode.Single: return(valueCopyer.ReadSingle() != 0); case TypeCode.Double: return(valueCopyer.ReadDouble() != 0); case TypeCode.Decimal: return(valueCopyer.ReadDecimal() != 0); } } if ((options & JsonFormatterOptions.IgnoreEmptyString) != 0 && basicType == TypeCode.String && valueCopyer.ReadString() == string.Empty) { return(false); } return(true); }