Android-GSON如何使用不同的数据解析JSON数组?

时间:2016-03-21 16:57:19

标签: android arrays json android-volley gson

我已完成了几轮JSON解析,但这是我从未遇到的问题。我们如何解析这种json数组?

 [{
"about": "xyz ",
"id": "cda",
"username": "ps"
}, {
"description": "this is sample response",
"id": "ahhj",
}]

5 个答案:

答案 0 :(得分:5)

显然,您的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);

希望我帮忙!没有!你怎么告诉我我做错了什么。 :)

答案 1 :(得分:1)

也许this回答可能会有所帮助。

基本上,您应该迭代每个JSON对象并使用GSON方法来获取所有密钥。然后,您可以迭代每个键并使用键获取值。

答案 2 :(得分:1)

使用jsonObject.had(" key")来知道此jsonObject是否存在此密钥。因此,您可以从其唯一键中识别您的对象,例如: 如果对象具有约键,那么它就像第一个对象,如果它有描述,那么它就是第二个对象。确保迭代JsonArray中的所有JsonObject

答案 3 :(得分:1)

我可能会将其反序列化为Map<String,String>[],或者如果您希望其他数据类型为值Map<String, Object>[],并根据需要以此方式遍历它。

答案 4 :(得分:1)

您的Json结果是一个包含数据Array的JsonObject。 更改您的结果数据如下:

"data":{[
   {
    "about": "xyz ",
    "id": "cda",
    "username": "ps"
   },
   {
    "description": "this is sample response",
    "id": "ahhj",
   }
 ]}

然后创建一个模型类并使用GSON。如果你有任何问题请再次询问。