日期:2014-05-16  浏览次数:20524 次

Gson库实现json解析

Json(JavaScript Object Notation)是一种轻量级的数据交换格式,类似XML,但比XML更小更快更容易解析。当前各种流行的web应用框架都对Json提供良好的支持,各种流行开发语言也支持Json解析。

?

Java中解析Json的方式也很多,根据官方的JSONObject库,自己设计的一个抽象工具类:

?

Java代码 ?收藏代码
  1. import ?java.io.Serializable;??
  2. import ?java.util.List;??
  3. ??
  4. import ?org.json.JSONException;??
  5. import ?org.json.JSONObject;??
  6. ??
  7. public ? abstract ? class ?JsonParser?<T? extends ?Serializable>{??
  8. ??????
  9. ????abstract ?List<T>?getListFromJson(String?str);??
  10. ??????
  11. ????abstract ?T?getObjectFromJson(JSONObject?jobj);??
  12. ??????
  13. ????public ?T?getObjectFromJson(String?str)?{??
  14. ????????try ?{??
  15. ????????????JSONObject?jsonObject?=?new ?JSONObject(str);??
  16. ????????????return ?getObjectFromJson(jsonObject);??
  17. ????????}?catch ?(JSONException?e)?{??
  18. ????????????e.printStackTrace();???
  19. ????????}?catch (Exception?e){??
  20. ????????????e.printStackTrace();??
  21. ????????}??
  22. ????????return ? null ;??
  23. ????}??
  24. ??????
  25. ????protected ?String?getValueByName(JSONObject?jobj,?String?name)??
  26. ????????????throws ?JSONException{??
  27. ????????if (jobj.has(name)){??
  28. ????????????return ?jobj.getString(name);??
  29. ????????}??
  30. ????????return ? null ;??
  31. ????}??
  32. ??????
  33. }??

?

具体实现的子类如下:

?

Java代码 ?收藏代码
  1. public ? class ?UserInfoParser? extends ?JsonParser<UserInfo>?{??
  2. ??
  3. ????private ?UserInfoParser()?{??
  4. ??????????
  5. ????}??
  6. ??????
  7. ????@Override ??
  8. ????List<UserInfo>?getList