2014-12-02 78 views
0

具有JSON輸出兩種情況。 之一是,發現數據和我有一個JSON陣列和JSON對象是這樣的:如何解析JSON對象和JSON陣列I一起

{"data":"yes"}[{"id":"10","number":"7","text":"text7","desc":"text7_again","user_code":"0"},{"id":"11","number":"8","text":"text8","desc":"text8_again","user_code":"1"}] 

其他的情況是,未發現數據:

{"data":"no"} 

只是一個JSON對象。

如何解析在Android客戶端此數據支持2個situtaion?

+1

「是」的版本是不是有效的JSON,所以不會有分析它... – 2014-12-02 19:44:19

+0

我如何可以實現模式的任何問題?使用兩個數組? – javaddroid 2014-12-02 19:51:03

回答

1

首先,你應該在驗證你的http://jsonlint.com/ JSON,如果你測試它,你會看起來這是一個錯誤的JSON。因此,對於作出正確的,在你的服務器的響應應該是這個樣子:

{"data":"yes","response":[{"id":"10","number":"7","text":"text7","desc":"text7_again","user_code":"0"},{"id":"11","number":"8","text":"text8","desc":"text8_again","user_code":"1"}]} 

而且在這種情況下,在android系統

JSONObject jsonObj = new JSONObject(response); 
if (jsonObj.getString("data").compareTo("yes") == 0) { 
    JSONArray jsonArray = jsonObj.getJSONArray("response"); 
    //To-Do another code 
} 

,這一切

1

以下是可能的案例:(你需要修復您的JSON格式)

成功 -

string resultJSON = 
    {"success":true, 
     "data":[ 
      {"id":"10","number":"7","text":"text7","desc":"text7_again","user_code":"0"}, 
      {"id":"11","number":"8","text":"text8","desc":"text8_again","user_code":"1"}]} 

失敗 -

string resultJSON = 
    {"success":false} 

然後

JSONObject jsonRoot = new JSONObject(resultJSON); 
bool isSuccess = jsonRoot.getBoolean("success"); 
if (isSuccess) { 
    // do the array parser 
    for(int i=0; i<jsonData.lenght;i++) { 
     JSONObject jsonObj = jsonData.getJSONObject(i); 
     String id = jsonObj.getString("id"); // get the value of id 
     String desc = jsonObj.getString("desc"); // and so on... 
    } 
}