Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 /// <summary>
 /// 获取值的基础类型枚举。
 /// </summary>
 /// <returns>返回一个 BasicTypes 枚举值。</returns>
 public BasicTypes GetBasicType()
 {
     dataReader.OnReadValue(key, valueCopyer);
     return(valueCopyer.GetBasicType());
 }