private IList <Object> ProduceJsonArrayElements(LiteJsonTokenizer tokenizer) { IList <Object> elements = new List <Object>(); var type = PeekAndGetType(tokenizer); while (type != TokenType.RSQUARE) { object element = ProduceJsonArrayElement(tokenizer); if (element != null) { elements.Add(element); } type = PeekAndGetType(tokenizer); // "consume" the comma. // Note: We are very lenient when it comes to extra/repeated commas... while (type == TokenType.COMMA) { JsonToken t = tokenizer.Next(); type = PeekAndGetType(tokenizer); } } System.Diagnostics.Debug.WriteLine("elements = " + elements); return(elements); }
private JsonToken NextAndGetToken(LiteJsonTokenizer tokenizer) { JsonToken s = tokenizer.Next(); if (JsonToken.IsInvalid(s)) { throw new DotJsonMiniException("Failed to get the next json token. "); } return(s); }
private object ProduceJsonNull(LiteJsonTokenizer tokenizer) { object jNull = null; try { JsonToken t = tokenizer.Next(); // Consume the "null" literal. jNull = JsonNull.NULL; } catch (Exception e) { throw new DotJsonMiniException("Failed to create a Null node. "); } return(jNull); }
private bool ProduceJsonBoolean(LiteJsonTokenizer tokenizer) { bool jBoolean = false; // ????? try { JsonToken t = tokenizer.Next(); jBoolean = (bool)t.Value; } catch (Exception e) { throw new DotJsonMiniException("Failed to create a Boolean node. "); } return(jBoolean); }
//private int NextAndGetType(LiteJsonTokenizer tokenizer) private TokenType NextAndGetType(LiteJsonTokenizer tokenizer) { JsonToken s = tokenizer.Next(); if (JsonToken.IsInvalid(s)) { throw new DotJsonMiniException("Failed to get the next json token. "); } var type = s.Type; return(type); }
private string ProduceJsonString(LiteJsonTokenizer tokenizer) { string jString = null; try { JsonToken t = tokenizer.Next(); // System.Diagnostics.Debug.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>>>>>> t = " + t); jString = (String)t.Value; // System.Diagnostics.Debug.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>>>>>> jString = " + jString); } catch (Exception e) { throw new DotJsonMiniException("Failed to create a string node. "); } return(jString); }
// ???? private object ProduceJsonNumber(LiteJsonTokenizer tokenizer) { object jNumber = null; try { JsonToken t = tokenizer.Next(); jNumber = t.Value; // ??? if (jNumber is Number) { jNumber = ((Number)jNumber).Value; } // ??? } catch (Exception e) { throw new DotJsonMiniException("Failed to create a Number node. "); } return(jNumber); }
private IList <Object> ProduceJsonArray(LiteJsonTokenizer tokenizer) { TokenType lsq; lsq = NextAndGetType(tokenizer); if (lsq != TokenType.LSQUARE) { // this cannot happen. throw new DotJsonMiniException("JSON array should start with [. "); } IList <Object> list = new List <Object>(); var type = PeekAndGetType(tokenizer); if (type == TokenType.RSQUARE) { // empty array JsonToken t = tokenizer.Next(); // discard the trailing ]. } else { IList <Object> elements = ProduceJsonArrayElements(tokenizer); var rsq = NextAndGetType(tokenizer); // discard the trailing ]. if (rsq == TokenType.RSQUARE) { // Done foreach (var el in elements) { list.Add(el); } } else { // ??? throw new DotJsonMiniException("JSON array should end with ]. "); } } IList <Object> jArray = list; System.Diagnostics.Debug.WriteLine("jArray = " + jArray); return(jArray); }
private IDictionary <String, Object> ProduceJsonObject(LiteJsonTokenizer tokenizer) { var lcurl = NextAndGetType(tokenizer); // pop the leading {. if (lcurl != TokenType.LCURLY) { // this cannot happen. throw new DotJsonMiniException("JSON object should start with {. "); } IDictionary <String, Object> map = new Dictionary <String, Object>(); var type = PeekAndGetType(tokenizer); if (type == TokenType.RCURLY) { // empty object JsonToken t = tokenizer.Next(); // discard the trailing }. } else { IDictionary <String, Object> members = ProduceJsonObjectMembers(tokenizer); TokenType rcurl; rcurl = NextAndGetType(tokenizer); // discard the trailing }. if (rcurl == TokenType.RCURLY) { // Done foreach (var k in members.Keys) { map.Add(k, members[k]); } } else { // ??? throw new DotJsonMiniException("JSON object should end with }. "); } } IDictionary <String, Object> jObject = map; System.Diagnostics.Debug.WriteLine("jObject = " + jObject); return(jObject); }
private IDictionary <String, Object> ProduceJsonObjectMembers(LiteJsonTokenizer tokenizer) { IDictionary <String, Object> members = new Dictionary <String, Object>(); var type = PeekAndGetType(tokenizer); while (type != TokenType.RCURLY) { KeyValuePair <String, Object> member = ProduceJsonObjectMember(tokenizer); members.Add(member.Key, member.Value); type = PeekAndGetType(tokenizer); // "consume" the comma. // Note: We are very lenient when it comes to extra/repeated commas... while (type == TokenType.COMMA) { JsonToken t = tokenizer.Next(); type = PeekAndGetType(tokenizer); } } System.Diagnostics.Debug.WriteLine("members = " + members); return(members); }