如何将json对象和json数组解析在一起

时间:2014-12-02 19:42:57

标签: android json web-services

我有两种Json输出的情况。 一个是找到的数据,我有一个像这样的json数组和一个json对象:

{"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 个答案:

答案 0 :(得分: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 :(得分: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...
  }
 }