2010-11-30 91 views
1

我正在使用Drupal服务以及JSON服务模块作为数据源。如何在Android中反序列化Drupal JSON服务字符串?

我正在使用DrupalCloud库https://github.com/skyred/DrupalCloud/wiki,并且想知道如何最好地处理从userLogin()调用中收到的结果。

如果调用本身出现故障时,我们得到:

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

如果调用成功,但登录凭证是错误的:

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

如果调用成功,登录凭据是正确的,它返回:

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

我该如何去使用这些有意义的数据?或者说,我该如何测试以查看通话是否有效,以及登录是否成功。

回答

0

这是在解析的最后JSON消息的一种方式你的问题:

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... 
    } 
} 
相关问题