gson解析json数组

GSON的两个重要方法

  在GSON的API中,提供了两个重要的方法:toJson()和fromJson()方法。其中,toJson()方法用来实现将Java对象转换为相应的JSON数据,fromJson()方法则用来实现将JSON数据转换为相应的Java对象。

1.1 toJson()方法

  toJson()方法用于将Java对象转换为相应的JSON数据,主要有以下几种形式:

  (1)String toJson(JsonElement jsonElement);

  (2)String toJson(Object src);

  (3)String toJson(Object src, Type typeOfSrc);

  其中,方法(1)用于将JsonElement对象(可以是JsonObject、JsonArray等)转换成JSON数据;方法(2)用于将指定的Object对象序列化成相应的JSON数据;方法(3)用于将指定的Object对象(可以包括泛型类型)序列化成相应的JSON数据。

1.2 fromJson()方法

  fromJson()方法用于将JSON数据转换为相应的Java对象,主要有以下几种形式:

  (1) T fromJson(JsonElement json, Class classOfT);

  (2) T fromJson(JsonElement json, Type typeOfT);

  (3) T fromJson(JsonReader reader, Type typeOfT);

  (4) T fromJson(Reader reader, Class classOfT);

  (5) T fromJson(Reader reader, Type typeOfT);

  (6) T fromJson(String json, Class classOfT);

  (7) T fromJson(String json, Type typeOfT);

  以上的方法用于将不同形式的JSON数据解析成Java对象。

下实例解析下面的json数组


string response={

  • "code":1001,
  • "data": [
    • {},
    • {},
    • {},
    • {},
    • {},
    • {},
    • {}
    ]

}


class Book {

...

}


try {
JSONObject object=new JSONObject(response);
int code=object.getInt("code");
JsonParser parser=new JsonParser();
JsonObject obj=parser.parse(response).getAsJsonObject();
JsonArray array=obj.getAsJsonArray("data");
Gson gson=new Gson();
List books=new ArrayList();
if (code==GlobalConsts.RESPONSE_CODE_SUCCESS) {
Type type = (Type) new TypeToken() {}.getType();
for (int i = 0; i < array.size(); i++) {
JsonElement j=array.get(i);
Book book=gson.fromJson(j, type);
books.add(book);
}
callback.onSuccess(books);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("error", "response:"+error.getMessage());
}
});

如果要处理的JSON字符串只包含一个JSON对象,则可以直接使用fromJson获取一个User对象:

String jsonData = "{\"username\":\"arthinking\",\"userId\":001}";
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);
System.out.println(user.getUsername());
System.out.println(user.getUserId());

你可能感兴趣的:(Android)