Читать файл JSON на Android

Я пытаюсь войти в систему, сервер программируется на Javascript (используя node.js). У меня есть проблема (которая, как я видел, очень распространена, но я до сих пор не могу найти свою проблему) заключается в том, что, когда я пытаюсь ее прочитать, я получаю следующее сообщение: Value //Objeto JSON// of type java.lang.String cannot be converted to JSONObject. Код сервера выглядит следующим образом:

app.post('/Acceso', function(req, res){
    var conDB=DB();
    var UsuarioReg=req.body.Usuario;
    var ContraReg=req.body.Contra;
    conDB.query('SELECT * FROM Usuario WHERE Usuario = ? and Contra= ?',
        [UsuarioReg,ContraReg],
        function(err,rows){
            conDB.end();
        if(err)
        {
            return console.log(err);
        }
        else
        {
            if (!rows.length)
            {
                var obj='{"log":"no"}';
                return res.json(JSON.stringify(obj));
            }
            else
            {
                console.log(rows);
                var obj='{"log":"si"}';
                return res.json(JSON.stringify(obj));
            }
        }
    });
});

Код пользователя, который отвечает за чтение того, что он говорит в журнале, таков:

import org.json.JSONException;
import org.json.JSONObject;

    public class LeerConsulta{

        JSONObject jsonResponse;
        String content="";

        public LeerConsulta(String data)
        {
            content=data;
        }
        protected String onPostExecute()
        {
            try
            {
                jsonResponse = new JSONObject(content);
                String log=(String)jsonResponse.get("log");
                return log;
            }
            catch(JSONException e)
            {
                String error=e.getMessage();
                return error;
            }
        }

    }

Я знаю, что это может быть неправильно так же, как Я пишу строку, которая преобразуется в JSON, когда я отправляю ее пользователю, как способ, которым я принимаю его содержимое. Вот почему я отправляю оба. РЕДАКТИРОВАНИЕ: основной код, который отвечает за создание отношений с классом, который читает запрос в JSON, выглядит следующим образом:

aceptar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String usuario=Usuario.getText().toString();
                String contra=Contra.getText().toString();
                Ajax logIn=new Ajax(new String[]{
                        "Usuario="+usuario,
                        "Contra="+contra
                });
                try {
                    String acceso = logIn.execute(IP_ADDRESS+"Acceso").get();
                    LeerConsulta lec=new LeerConsulta(acceso);
                    String conf=lec.onPostExecute();
                    Toast.makeText(MainActivity.this, conf, Toast.LENGTH_LONG).show();
                   /* if(!acceso.equals("si"))
                        Toast.makeText(MainActivity.this, "Usuario y/o clave no valida", Toast.LENGTH_SHORT).show();
                    else
                    {
                        Intent intent=new Intent(MainActivity.this, Accedido.class);
                        startActivity(intent);
                    }*/
                } catch(Exception exc){
                    Toast.makeText(MainActivity.this, exc.toString(),Toast.LENGTH_SHORT).show();
                }
            }
        });
0
задан 09.01.2017, 00:11
1 ответ

Ошибка, которая выходит у тебя, говорит все.

Оцените//Объект JSON//of type java.lang. String cannot be converted to JSONObject

Заменяет в твоем Java:

jsonResponse = new JSONObject(content);

Из-за:

jsonResponse = new JSONObject(content);
String log = (String) jsonResponse.get("log");
System.out.println("log: " + log);

то, что посылает твой сервер этого NodeJS хорошо. В твоем Java только это проблема.

0
ответ дан 24.11.2019, 11:43
  • 1
    я я не функционирую. Издайте код, который появляется в вопросе, как для того, чтобы он был виден этой сейчас. Тема состоит в том, что у меня есть класс, в котором я получаю string, который является объектом JSON. Потом, я думаю объект, полученный от этого класса и, в main, я помещаю, что другая переменная string равна в результате функции, которая появляется там. Именно, что мне кажется, что он плохой, он такой, как я делаю JSON в NodeJS частично из-за вопроса уважения кавычек или чего-то, создав это.... Ты обратил внимание, что это не было этим? – F. Riggio 08.01.2017, 23:55
  • 2
    если у тебя есть какое-то сомнение относительно, как я сделал main, я могу издавать вопрос и добавлять это, что я говорю – F. Riggio 08.01.2017, 23:57
  • 3
    Поскольку я не имею доступа к có я говорю, что я завершаю, не могу иметь вкус с точностью вещей. Но что я вижу jsonResponse = new JSONObject (content); Твой content не deberí чтобы быть this, content. Где - часть, которая получает от сервера NodeJS Java. Там ты перемещаешь его content как string?? – josego 09.01.2017, 00:00
  • 4
    там добавил có я говорю main. Проблема, которая у меня есть с node, добавив кавычки, состоит, в том, что после того, как, это внутри string вынуждает меня, в который они были простыми, так как после того, как были двойными порциями, он бросает ошибку...., я увидел функцию, чтобы это решать в другом вопросе на странице, но я не вспоминаю о которой эре. я иду посмотрим могу решать это с этим – F. Riggio 09.01.2017, 00:07
  • 5
    Я сделал изменение в цепи, когда я буду верить в нее в node. JS (возможно наблюдать в вопросе) и сейчас, когда я прошу то, что говорит String, он помещает меня в объект JSON " { " log\":\" si\" } ". Я не, из-за которого он это делает...., сделал какое-то изменение важным? – F. Riggio 09.01.2017, 00:15