Exemplo n.º 1
0
        protected JsonObject InternalReadObject()
        {
            JsonObject ret = new JsonObject();

            while (true)
            {
                JsonScannerToken token = GetToken();
                if (token.Type == eTokenType.FechaChaves)
                {
                    return(ret);
                }
                if (token.Type == eTokenType.String)
                {
                    string nome = token.Conteudo.ToString();
                    token = GetToken();
                    if (token.Type != eTokenType.DoisPontos)
                    {
                        throw ReturnError("Esperado :");
                    }
                    ret.Add(nome, InternalReadValue());

                    token = GetToken();
                    if (token.Type == eTokenType.FechaChaves)
                    {
                        return(ret);
                    }
                    if (token.Type == eTokenType.Virgula)
                    {
                        continue;
                    }
                }
                throw ReturnError("Par nome/valor inválido");
            }
        }
Exemplo n.º 2
0
        private object ReadVetor()
        {
            List <object> ret = new List <object>();

            while (true)
            {
                JsonScannerToken token = GetToken();
                if (token.Type == eTokenType.FechaColchetes)
                {
                    return(ret.ToArray());
                }
                PushToken(token);
                ret.Add(ReadValor());
                token = GetToken();
                if (token.Type == eTokenType.FechaColchetes)
                {
                    return(ret.ToArray());
                }
                if (token.Type == eTokenType.Virgula)
                {
                    continue;
                }
                return(ReturnError("Item de vetor inválido"));
            }
        }
Exemplo n.º 3
0
        private JsonVector ReadVector()
        {
            JsonVector ret = new JsonVector();

            while (true)
            {
                JsonScannerToken token = GetToken();
                if (token.Type == eTokenType.FechaColchetes)
                {
                    return(ret);
                }
                PushToken(token);
                ret.Add(InternalReadValue());
                token = GetToken();
                if (token.Type == eTokenType.FechaColchetes)
                {
                    return(ret);
                }
                if (token.Type == eTokenType.Virgula)
                {
                    continue;
                }
                throw ReturnError("Item de vetor inválido");
            }
        }
Exemplo n.º 4
0
 private JsonScannerToken GetToken()
 {
     if (m_pushToken != null)
     {
         JsonScannerToken ret = m_pushToken;
         m_pushToken = null;
         return(ret);
     }
     return(m_Scanner.GetToken());
 }
Exemplo n.º 5
0
 public JsonScannerToken GetToken()
 {
     if (m_pushToken != null)
     {
         JsonScannerToken ret = m_pushToken;
         m_pushToken = null;
         return(ret);
     }
     LastToken = Tokens[TokenIndex++];
     return(LastToken);
 }
Exemplo n.º 6
0
        protected object InternalReadValue()
        {
            JsonScannerToken token = GetToken();

            if (token.Type == eTokenType.Numeric)
            {
                return(Convert.ToDecimal(token.Conteudo.ToString()));
            }

            if (token.Type == eTokenType.String)
            {
                return(token.Conteudo.ToString());
            }

            if (token.Type == eTokenType.AbreChaves)
            {
                return(InternalReadObject());
            }

            if (token.Type == eTokenType.AbreColchetes)
            {
                return(ReadVector());
            }

            if (token.Type == eTokenType.Ident)
            {
                string identValue = token.Conteudo.ToString();
                if (identValue == "null")
                {
                    return(null);
                }
                if (identValue == "true")
                {
                    return(true);
                }
                if (identValue == "false")
                {
                    return(false);
                }
            }

            throw ReturnError("Valor inválido");
        }
Exemplo n.º 7
0
        public object ReadValor()
        {
            JsonScannerToken token = GetToken();

            if (token.Type == eTokenType.Numeric)
            {
                return(Convert.ToDecimal(token.Conteudo.ToString()));
            }

            if (token.Type == eTokenType.String)
            {
                return(token.Conteudo.ToString());
            }

            if (token.Type == eTokenType.AbreChaves)
            {
                return(ReadObjeto());
            }

            if (token.Type == eTokenType.AbreColchetes)
            {
                return(ReadVetor());
            }

            if (token.Type == eTokenType.Ident)
            {
                string nomeIdent = token.Conteudo.ToString();
                if (nomeIdent == "null")
                {
                    return(null);
                }
                if (nomeIdent == "true")
                {
                    return(true);
                }
                if (nomeIdent == "false")
                {
                    return(false);
                }
            }

            return(ReturnError("Valor inválido"));
        }
Exemplo n.º 8
0
        private void buttonScan_Click(object sender, EventArgs e)
        {
            JsonScanner scanner = new JsonScanner();

            scanner.SetInput(textJson.Text);

            Debug.WriteLine("---------------------------");

            while (true)
            {
                JsonScannerToken token = scanner.GetToken();
                Debug.WriteLine("Token: {0} (pos {1}, {2})", token, token.NumeroLinha, token.NumeroColuna);
                if (token.Type == eTokenType.Erro)
                {
                    Debug.WriteLine("SCAN Error: {0}", token.Mensagem, null);
                    break;
                }
                if (token.Type == eTokenType.Eof)
                {
                    break;
                }
            }
        }
Exemplo n.º 9
0
        private object ReadObjeto()
        {
            dynamic ret = new ExpandoObject();
            IDictionary <string, object> objeto = ((IDictionary <String, Object>)ret);

            while (true)
            {
                JsonScannerToken token = GetToken();
                if (token.Type == eTokenType.FechaChaves)
                {
                    return(ret);
                }
                if (token.Type == eTokenType.String)
                {
                    string nome = token.Conteudo.ToString();
                    token = GetToken();
                    if (token.Type != eTokenType.DoisPontos)
                    {
                        return(ReturnError("Esperado :"));
                    }
                    object valor = ReadValor();
                    objeto.Add(nome, valor);

                    token = GetToken();
                    if (token.Type == eTokenType.FechaChaves)
                    {
                        return(ret);
                    }
                    if (token.Type == eTokenType.Virgula)
                    {
                        continue;
                    }
                }
                ReturnError("Par nome/valor inválido");
            }
        }
Exemplo n.º 10
0
 protected void PushToken(JsonScannerToken token)
 {
     m_pushToken = token;
 }
Exemplo n.º 11
0
 private void Init()
 {
     m_pushToken = null;
 }
Exemplo n.º 12
0
 public JsonDynReader()
 {
     TokenIndex  = 0;
     m_pushToken = null;
 }