【问题标题】:Android- GSON How to parse JSON Array with different data?Android- GSON 如何用不同的数据解析 JSON 数组?
【发布时间】:2016-03-21 16:57:19
【问题描述】:
我已经完成了几轮 JSON 解析,但这是我从未遇到过的。我们如何解析这种 json 数组?
[{
"about": "xyz ",
"id": "cda",
"username": "ps"
}, {
"description": "this is sample response",
"id": "ahhj",
}]
【问题讨论】:
标签:
android
arrays
json
android-volley
gson
【解决方案1】:
显然,您的 json 不是同质数据的列表。因此,无法转换为 List。
所以,我尝试了一段时间,并创建了一个 json
[{"name":"dave","clazz":"V"},{"token":"VIW","type":"dexter"}]
以及我能想到的最佳方法
1:转成JsonArray
JSONArray jsonArray = new JSONArray(json);
2:由于数组中的每个对象都可以是唯一的类型,所以在您非常确定它为 JsonObject 之前保持它是不错的主意。
JsonObject jsonObject = jsonArray.getJSONObject(0);
String token = jsonObject.getString("token");
3:当你确定你有一个类的模型(POJO)时,你肯定可以这样做。
MyPojo myPojo = new Gson().fromJson(jsonArray.getJSONObject(0).toString(), MyPojo.class);
希望我能帮上忙!不!你要不要告诉我我做错了什么。 :)
【解决方案2】:
也许this 的回答可能会有所帮助。
基本上,您应该迭代每个 JSON 对象并使用 GSON 方法来获取所有键。然后您可以迭代每个键并使用该键获取值。
【解决方案3】:
使用 jsonObject.had("key") 来知道这个 jsonObject 是否存在这个键。因此,您可以从您的示例中的唯一键中识别您的对象:
如果对象有 about 键,那么它就像第一个对象,如果它有描述它是第二个对象。确保迭代 JsonArray 中的所有 JsonObject
【解决方案4】:
您的 Json 结果是具有数据数组的 JsonObject。
更改您的结果数据,如下所示:
"data":{[
{
"about": "xyz ",
"id": "cda",
"username": "ps"
},
{
"description": "this is sample response",
"id": "ahhj",
}
]}
然后制作一个模型类并使用 GSON。有问题再问。
【解决方案5】:
我可能会将其反序列化为 Map<String,String>[],或者如果您期望其他数据类型作为值 Map<String, Object>[] 并根据需要以这种方式遍历它。