Пример #1
0
        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);
        }
Пример #2
0
        //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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }