IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Erreur "org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject"


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 24
    Points : 15
    Points
    15
    Par défaut Erreur "org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject"
    Bonjour,

    Je suis en train de développer un application Android sous Android Studio et j'utilise du JSON pour pouvoir accéder à ma base de données sous phpMyAdmin. Et je souhaite afficher des données sur mon application, plus précisément dans un GridView.

    Le problème est que l'application reçoit bien les données, je peux le voir dans ma console. Mais en suite, il me signale un problème de conversion, que je n'arrive pas à résoudre et à trouver la source.

    Voici les données que je reçois et qui est suivi directement par l'erreur.
    D/Response: {"valeurs":[{"col1":"test1","col2":"test2","col3":"test3"}],"success":1}
    W/System.err: org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject
    Et voici mon code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
            protected Void doInBackground(Void... params) {
                Log.i("add", " start doInBackground");
                ServiceHandler sh = new ServiceHandler();
     
                // Making a request to url and getting response
                String jsonStr = sh.makeServiceCall(urlGet, ServiceHandler.GET);
     
                Log.d("Response: ",jsonStr);
     
                if (jsonStr != null) {
                    try {
                        JSONObject jsonObj = new JSONObject(jsonStr);
                        // return value of success
                        success=jsonObj.getInt("success");
                        Log.i("success", String.valueOf(success));
                        if (success==0)
                        {
                            // success=0 ==> there is a string = message
                            message=jsonObj.getString("message");
                            Log.i("message", message);
                        }
                        else if (success==1)
                        {
                            // success=1 ==> there is an array of data = valeurs
                            JSONArray dataValues = jsonObj.getJSONArray("valeurs");
                            // loop each row in the array
                            for(int j=1;j<dataValues.length();j++)
                            {
                                JSONObject values = dataValues.getJSONObject(j);
                                // return values of col1 in valCol1
                                String valCol1= values.getString("col1");
                                // return values of col2 in valCol2
                                String valCol2= values.getString("col2");
                                String valCol3= values.getString("col3");
                                //add a string witch contains all of data getted from the response
                                myListofData.add(valCol1+" - "+valCol2+" - "+valCol3);
                                Log.i("Row "+(j+1), valCol1+" - "+valCol2+" - "+valCol3);
                            }
                        }
     
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                } else {
                    Log.e("ServiceHandler", "Aucunes données à cette adresse");
                }
     
                Log.i("add", " end doInBackground");
                return null;
            }
     
     
            @Override
            protected void onPostExecute(Void result) {
                Log.i("add", "onPostExecute");
                super.onPostExecute(result);
                if (progressDialog.isShowing())
                {
                    progressDialog.dismiss();
                }
                if(success==1)
                {
                    Toast.makeText(getApplicationContext(), "Bien récues ", Toast.LENGTH_LONG).show();
                    // show the list view contains the data
                    arrayadp = new ArrayAdapter(getApplicationContext(),  android.R.layout.simple_list_item_single_choice, myListofData);
                    lv.setAdapter(arrayadp);
                }
                else
                {
                    Toast.makeText(getApplicationContext(), "Erreur", Toast.LENGTH_LONG).show();
                }
            }
    Je vous remercie d'avance pour votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    Problème résolu. En fait, j'utilisais un classe pour créer la connexion et celle-ci comportait des balises obsolètes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/07/2013, 09h20
  2. Réponses: 5
    Dernier message: 01/05/2012, 13h25
  3. Réponses: 1
    Dernier message: 24/10/2011, 11h25
  4. Réponses: 7
    Dernier message: 26/10/2010, 18h31
  5. [JSTL] Attempt to coerce a value of type "java.lang.Integer" to Boolean
    Par jamalmoundir dans le forum Taglibs
    Réponses: 3
    Dernier message: 26/06/2007, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo