Exemplo n.º 1
0
 public void ReadWriteValue <_Ty>(ref _Ty tValue, SerializeValue <_Ty> func) where _Ty : new ()
 {
     if (tValue == null)
     {
         tValue = new _Ty();
     }
     func(this, ref tValue);
 }
Exemplo n.º 2
0
        public override bool StartProperty(string name)
        {
            if (!currentNode.TryGet(name, out var element))
            {
                return(false);
            }

            parentNodes[depth++] = currentNode;
            currentNode          = element;
            return(true);
        }
Exemplo n.º 3
0
 public static SerializeValue[] GetSerializeValues(Type type)
 {
     lock (serializeValues.SyncRoot)
     {
         SerializeValue[] values = (SerializeValue[])serializeValues[type];
         if (values != null)
         {
             return(values);
         }
         MemberValue[] memberValues = MemberValue.GetMemberValues(type, new Type[2] {
             typeof(ServerSerialize), typeof(DataElement)
         }, true, true);
         values = SerializeValue.GetSerializeValues(memberValues);
         serializeValues[type] = values;
         return(values);
     }
 }
Exemplo n.º 4
0
        public override T Load <T>(Stream stream)
        {
            var buf = MemoryPool.GetBuffer();
            var len = FillFromStream(stream, ref buf);

            // when token is number, can not use from pool(can not find end line).
            var token = new JsonReader(buf).GetCurrentJsonToken();

            if (token == JsonToken.Number)
            {
                buf = Utf8Json.Internal.BinaryUtil.FastCloneWithResize(buf, len);
            }

            var reader = new JsonReader(buf);

            doc = Parse(ref reader, 0);
            parentNodes[depth++] = doc;
            currentNode          = doc;
            T obj = default;

            Serialize(ref obj, 1);
            return(obj);
        }
 static LoginHandlers()
 {
     MemberValue[] values = MemberValue.GetMemberValues(typeof(DBItemTemplate), typeof(Common.Attributes.DataElement), true, true);
     itemTemplateValues = SerializeValue.GetSerializeValues(values);
 }
Exemplo n.º 6
0
        static SerializeValue Parse(ref JsonReader reader, int depth)
        {
            SerializeValue value = default;
            var            token = reader.GetCurrentJsonToken();

            switch (token)
            {
            case JsonToken.BeginObject:
            {
                value = new SerializeValue(new Dictionary <string, SerializeValue>());
                var c = 0;
                while (reader.ReadIsInObject(ref c))
                {
                    var propName = reader.ReadPropertyName();
                    var element  = Parse(ref reader, depth + 1);
                    value.Add(propName, element);
                }
            }
            break;

            case JsonToken.BeginArray:
            {
                value       = new SerializeValue(ValueType.Array);
                value.array = new List <SerializeValue>();

                var c = 0;
                while (reader.ReadIsInArray(ref c))
                {
                    var element = Parse(ref reader, depth + 1);
                    value.Add(element);
                }
            }
            break;

            case JsonToken.Number:
            {
                value = reader.ReadDouble();
            }
            break;

            case JsonToken.String:
            {
                value = reader.ReadString();
            }
            break;

            case JsonToken.True:
            case JsonToken.False:
            {
                value = reader.ReadBoolean();
            }
            break;

            case JsonToken.Null:
            {
                reader.ReadIsNull();
                value = SerializeValue.Null;
            }
            break;

            default:
                break;
            }

            return(value);
        }
Exemplo n.º 7
0
 public override void EndArray()
 {
     currentNode = parentNodes[--depth];
 }
Exemplo n.º 8
0
        public override void SetElement(int index)
        {
            var parentNode = parentNodes[depth - 1];

            currentNode = parentNode[index];
        }
Exemplo n.º 9
0
 public override void EndProperty()
 {
     currentNode = parentNodes[--depth];
 }