2010-11-30 5 views
1

J'utilise Drupal Services avec le module Services JSON en tant que source de données.Comment désérialiser les chaînes Drupal JSON Services dans Android?

J'utilise la bibliothèque DrupalCloud, https://github.com/skyred/DrupalCloud/wiki, et je me demande comment traiter au mieux les résultats que je reçois d'un appel userLogin().

Si l'appel lui-même ne nous obtenons:

{ 
    "#error": true, 
    "#message": "Some message" 
} 

Si l'appel réussit, mais les informations de connexion sont erronées:

{ 
    "#error": false, 
    "#data": { 
    "#error": true, 
    "#message": "Some message" 
    } 
} 

Si le succès de l'appel et les informations de connexion sont corrects, il retourne :

{ 
    "#error": false, 
    "#data": { 
    "sessid": "foo", 
    "user": { 
     "uid": "69", 
     "name": "Russell Jones", 
     "pass": "bar", 
     "mail": "[email protected]", 
     "roles": { 
     "2": "authenticated user", 
     "5": "Student" 
     }, 
    } 
    } 
} 

Comment puis-je utiliser ces données de manière significative? Ou plutôt, comment puis-je tester pour voir si l'appel a fonctionné, et si la connexion a été réussie ou non.

Répondre

0

C'est une façon d'analyser le dernier message JSON dans votre question:

public void readJsonString(String jsonString) throws JSONException 
{ 
    JSONObject jsonObject = new JSONObject(jsonString); 
    boolean error = jsonObject.getBoolean("#error"); 
    if (!error) 
    { 
     JSONObject data = jsonObject.getJSONObject("#data"); 
     String sessionId = data.getString("sessid"); 
     JSONObject user = data.getJSONObject("user"); 
     int uid = user.getInt("uid"); 
     String name = user.getString("name"); 

     // you get the pattern, same way with the other fields... 
    } 
}