2014-12-02 84 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... 
    } 
}