private JsonToken PeekAndGetToken(LiteJsonTokenizer tokenizer) { JsonToken s = tokenizer.Peek(); if (JsonToken.IsInvalid(s)) { throw new DotJsonMiniException("Failed to get the next json token. "); } return(s); }
//private int PeekAndGetType(LiteJsonTokenizer tokenizer) private TokenType PeekAndGetType(LiteJsonTokenizer tokenizer) { JsonToken s = tokenizer.Peek(); if (JsonToken.IsInvalid(s)) { throw new DotJsonMiniException("Failed to get the next json token. "); } var type = s.Type; return(type); }
private object ProduceJsonArrayElement(LiteJsonTokenizer tokenizer) { object element = null; var type = PeekAndGetType(tokenizer); switch (type) { case TokenType.NULL: element = ProduceJsonNull(tokenizer); break; case TokenType.BOOLEAN: element = ProduceJsonBoolean(tokenizer); break; case TokenType.NUMBER: element = ProduceJsonNumber(tokenizer); break; case TokenType.STRING: element = ProduceJsonString(tokenizer); break; case TokenType.LCURLY: element = ProduceJsonObject(tokenizer); break; case TokenType.LSQUARE: element = ProduceJsonArray(tokenizer); break; default: // ??? throw new DotJsonMiniException("Json array element not recognized: token = " + tokenizer.Peek() + "; "); } System.Diagnostics.Debug.WriteLine("element = " + element); return(element); }
private KeyValuePair <String, Object> ProduceJsonObjectMember(LiteJsonTokenizer tokenizer) { JsonToken keyToken = NextAndGetToken(tokenizer); var keyType = keyToken.Type; if (keyType != TokenType.STRING) { throw new DotJsonMiniException("JSON object member should start with a string key. keyType = " + keyType + "; "); } string key = (String)keyToken.Value; JsonToken colonToken = NextAndGetToken(tokenizer); // "consume" :. var colonType = colonToken.Type; if (colonType != TokenType.COLON) { throw new DotJsonMiniException("JSON object member should include a colon (:). "); } object value = null; var type = PeekAndGetType(tokenizer); switch (type) { case TokenType.NULL: value = ProduceJsonNull(tokenizer); break; case TokenType.BOOLEAN: value = ProduceJsonBoolean(tokenizer); break; case TokenType.NUMBER: value = ProduceJsonNumber(tokenizer); break; case TokenType.STRING: value = ProduceJsonString(tokenizer); break; case TokenType.LCURLY: value = ProduceJsonObject(tokenizer); break; case TokenType.LSQUARE: value = ProduceJsonArray(tokenizer); break; default: // ??? throw new DotJsonMiniException("Json array element not recognized: token = " + tokenizer.Peek() + "; "); } // TBD: Use type factory ??? KeyValuePair <String, Object> member = new KeyValuePair <String, Object>(key, value); System.Diagnostics.Debug.WriteLine("member = " + member); return(member); }