如何解析有时是Json对象的对象,有时候是json数组

时间:2017-03-04 14:19:08

标签: android parsing gson

我使用API​​,其中一个对象可以是一个数组,或者它可以是任何对象,我不知道在哪种情况下它将是对象或数组,所以我不能使用不同的对象基础一些条件。

很遗憾,我无法访问API代码,因此我无法对其进行任何更改。我要做的任何技巧都将在客户端。

那么处理该场景的最佳方法是什么。

修改:响应示例

.
.
  "ecf":"0",
            "place":{  },
            "mn":"1st Test",
            "teams":[  ],
            "past_ings":[  
               {  
                  "s":{  },
                  "d":{  
                     "a":{  
                        "t":{  
                           "i":"5221",
                           "a":"3",
                           "c":"not out",
                           "dt":null,
                           "fd":"0",
                           "bd":"0",
                           "cb":"no",
                           "b":"1",
                           "r":"0",
                           "sr":"0",
                           "four":"0",
                           "six":"0",
                           "name":"Umesh Yadav"
                        }
                     }
                  }
               }
.
.

对象t可以是数组,也可以是对象。

注意:我正在使用Gson解析并在我的网络层中使用Retrofit。

2 个答案:

答案 0 :(得分:1)

Object response = json.get("response")
if (response instanceof JSONArray) {
  // It's an array, cast it as a JSONArray to use it.
} else {
  // It's an object, cast it as a JSONObject to use it.
}

答案 1 :(得分:0)

在Java中用Gson解析json时,只需定义这是Object。 之后你有手动,如果那么对象是数组或对象。