private bool WriteSyntaxObjectNode(SyntaxObjectNode Node) { EnterChunk(); JsonString_.Push('{'); JsonString_.Push('\n'); var Keys = Node.GetKeys(); for (var Index = 0; Index < Keys.Length; ++Index) { var Child = Node.GetValue(Keys[Index]); WriteChunkTab(); JsonString_.Push('"'); JsonString_.PushString(Keys[Index]); JsonString_.Push('"'); JsonString_.PushString(" : "); WriteSyntaxNode(Child); if (Index != Keys.Length - 1) { JsonString_.Push(','); } JsonString_.Push('\n'); } LeaveChunk(); WriteChunkTab(); JsonString_.Push('}'); return(true); }
private static JsonObject ParseJsonObjectFromNode(SyntaxObjectNode Node) { var Keys = Node.GetKeys(); var JsonObj = new JsonObject(); foreach (var Key in Keys) { var Value = ParseJsonValueFromNode(Node.GetValue(Key)); JsonObj.SetValue(Key, Value); } return(JsonObj); }
private static SyntaxObjectNode ParseNodeFromObject(Type ObjType, object Obj) { var Node = new SyntaxObjectNode(); var Fileds = ObjType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); foreach (var Filed in Fileds) { var FiledValue = Filed.GetValue(Obj); var FiledNode = ParseNodeFromValue(Filed.FieldType, FiledValue); Node.AddChild(Filed.Name, FiledNode); } return(Node); }
private SyntaxObjectNode ParseObject() { if (TokensStream_.Take().Code_ != LanguageDescriptor.JsonObjectBegin) { Logger.Add(TokensStream_.Peek().Line_, TokensStream_.Peek().Index_, $"expected '{LanguageDescriptor.JsonObjectBegin}' not appeared"); return(null); } var Node = new SyntaxObjectNode(); while (!TokensStream_.IsEnd()) { if (TokensStream_.Peek().Code_ == LanguageDescriptor.JsonObjectEnd) { break; } var Key = ParseKey(); if (string.IsNullOrWhiteSpace(Key)) { return(null); } if (TokensStream_.Take().Code_ != LanguageDescriptor.JsonDefineDelimiter) { Logger.Add(TokensStream_.Peek().Line_, TokensStream_.Peek().Index_, $"expected '{LanguageDescriptor.JsonDefineDelimiter}' not appeared"); return(null); } var Value = ParseValue(); if (Value == null) { return(null); } Node.AddChild(Key, Value); if (TokensStream_.Peek().Code_ == LanguageDescriptor.JsonValueDelimiter) { TokensStream_.Take(); } } TokensStream_.Take(); return(Node); }
private static object ParseObjectFromNode(Type ObjType, SyntaxObjectNode Node) { var Obj = Activator.CreateInstance(ObjType); var Keys = Node.GetKeys(); foreach (var Key in Keys) { var Info = ObjType.GetField(Key, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); if (Info == null) { continue; } var ChildValue = ParseValueFromNode(Info.FieldType, Node.GetValue(Key)); Info.SetValue(Obj, ChildValue); } return(Obj); }