public void ReadWriteValue <_Ty>(ref _Ty tValue, SerializeValue <_Ty> func) where _Ty : new () { if (tValue == null) { tValue = new _Ty(); } func(this, ref tValue); }
public override bool StartProperty(string name) { if (!currentNode.TryGet(name, out var element)) { return(false); } parentNodes[depth++] = currentNode; currentNode = element; return(true); }
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); } }
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); }
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); }
public override void EndArray() { currentNode = parentNodes[--depth]; }
public override void SetElement(int index) { var parentNode = parentNodes[depth - 1]; currentNode = parentNode[index]; }
public override void EndProperty() { currentNode = parentNodes[--depth]; }