Question

Je reçois donc un tableau JSON dans une HttpResponse. Le tableau se compose des objets / variables suivants.

{"Sessid": "vxkexkmbumbByesrlvaxrxsaftfhdqd8", "session_name": "Sess88cdfb2f1c420898", "User": {"uid": "60", "name": "ABC", "Theme": "", "Signature": " "," Signature_Format ":" filtered_html "," Created ":" 13082976 "," Access ":" 1386287 "," Login ": 1386211," Status ":" 1 "," Timezone ": null," Language ": "", "image": null, "data": {"mimemail_textonly": 0}, "rôles": {"2": "utilisateur authentifié", "5": "user de centre"}, "field_centre_reference": { "und": [{"nid": "256"}]}, "field_first_name": {"und": [{"value": "web", "format": null, "safe_value": "web"} ]}, "field_surname": {"und": [{"valeur": "services", "format": null, "safe_value": "services"}]}, "Bounce_mail_blocked": false, "force_password_change": " 0 "}}

Maintenant, je veux recevoir tous ces objets / chaînes dans des variables distinctes. Comme je veux stocker le "Sessid" dans une chaîne variable Session_id. Etc. Je peux obtenir les deux premiers (c.-à-d. Sessid et session_name) de manière simple à l'aide du code suivant.

response = client.execute(httppost);

BasicResponseHandler handler = new BasicResponseHandler();
String data = handler.handleResponse(response);
jObj = new JSONObject(data);

sessid = jObj.getString("sessid");
Log.d("sessid obj", sessid);
session_name = jObj.getString("session_name");
Log.d("session_name", session_name);

Mais comme je suis un noob chez Android, je ne sais pas comment faire enregistrer le reste des données en variables. Les données à venir ne peuvent pas être enregistrées de manière simple.

Était-ce utile?

La solution

Essayez ceci:

 JSONObject j_user = jObj.getJSONObject("user");
 String uid = j_user.getString("uid");
 ...
 //And so on with the rest of the fields

Autres conseils

{ // json object node 
    "sessid": "vxkEXkMBUmBByESRlvaxrxSaFTfhDqd8",
    "session_name": "SESS88cdfb2f1c420898",
    "user": { // json object user 
        "uid": "60", // string 
        "name": "abc",
        "theme": "",
        "signature": "",
        "signature_format": "filtered_html",
        "created": "13082976",
        "access": "1386287",
        "login": 1386211,
        "status": "1",
        "timezone": null,
        "language": "",
        "picture": null,
        "data": { // json object data
            "mimemail_textonly": 0 //string
        },
        ....// rest of the json

{ représente le nœud d'objet JSON

[ représente le nœud de tableau JSON

Pour analyser

 JSONObject jObj = new JSONObject(load());
 String sessid = jObj.getString("sessid");
 Log.d("sessid obj", sessid);
 JSONObject user = jObj.getJSONObject("user");
 String uid = user.getString("uid"); 
 Log.d("sessid obj", uid);

Pour analyser les données

 "data": {
        "mimemail_textonly": 0
    },


   JSONObject data= user.getJSONObject("data");
   Log.i(".......",""+data.getString("mimemail_textonly"));

À l'analyseur field_centre_reference

 "field_centre_reference": { // json object field_centre_reference
            "und": [  // json array und
                {        // json  object node 
                    "nid": "256" //string
                }
            ]
        },

  JSONObject field= user.getJSONObject("field_centre_reference");
  JSONArray jr = field.getJSONArray("und");
  JSONObject jb1 = (JSONObject) jr.get(0);
  Log.i(".......",""+jb1.getString("nid"));

Consultez la bibliothèque JacksonParser, il fournit des annotations qui rendent votre travail si facile. Et c'est l'une des bibliothèques d'analyse les plus rapides ... vous pouvez l'avoir ici

Éditer:Par exemple, vous pouvez jeter un œil à l'une de mes questions précédentes JacksonParser Databind et Core Cause "File File Duplicate File for APK"?

Vous devez remarquer que le JSON que vous avez reçu est un JSON imbriqué. C'est comme une carte que l'une des valeurs de la carte est également une carte. Dans votre cas, un jsonObject contient sessid et session_name tandis que la chaîne n'est que de la chaîne, mais l'utilisateur est également un jsonObject, vous pouvez donc l'analyser de niveau par niveau. Pour plus de détails, vous pouvez lire http://www.vogella.com/articles/androidjson/article.html

Essaye ça..

Obtenir

 "user": {
        "uid": "60",

JSONObject obj_user = jObj.getJSONObject("user");
String uid = obj_user.getString("uid");

 "user": {
            "uid": "60",
"data": {
            "mimemail_textonly": 0
        }

JSONObject obj_data = jObj.getJSONObject("data");
String mimemail_textonly = obj_user.getString("mimemail_textonly");
JSONObject obj_roles = jObj.getJSONObject("roles");
String two = obj_roles.getString("2");

"field_centre_reference": {
            "und": [
                {
                    "nid": "256"           

JSONObject obj_field_centre_reference = jObj.getJSONObject("field_centre_reference");
JSONArray ary_und = obj_field_centre_reference.getJSONArray("und");
JSONObject objve = ary_und.getJSONObject(0);
String nid= objve.getString("nid");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top