2010-11-30 94 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... 
    } 
} 
相關問題