Gson库实现json解析
Json(JavaScript Object Notation)是一种轻量级的数据交换格式,类似XML,但比XML更小更快更容易解析。当前各种流行的web应用框架都对Json提供良好的支持,各种流行开发语言也支持Json解析。
?
Java中解析Json的方式也很多,根据官方的JSONObject库,自己设计的一个抽象工具类:
?
-
import
?java.io.Serializable;??
-
import
?java.util.List;??
-
??
-
import
?org.json.JSONException;??
-
import
?org.json.JSONObject;??
-
??
-
public
?
abstract
?
class
?JsonParser?<T?
extends
?Serializable>{??
-
??????
-
????abstract
?List<T>?getListFromJson(String?str);??
-
??????
-
????abstract
?T?getObjectFromJson(JSONObject?jobj);??
-
??????
-
????public
?T?getObjectFromJson(String?str)?{??
-
????????try
?{??
-
????????????JSONObject?jsonObject?=?new
?JSONObject(str);??
-
????????????return
?getObjectFromJson(jsonObject);??
-
????????}?catch
?(JSONException?e)?{??
-
????????????e.printStackTrace();???
-
????????}?catch
(Exception?e){??
-
????????????e.printStackTrace();??
-
????????}??
-
????????return
?
null
;??
-
????}??
-
??????
-
????protected
?String?getValueByName(JSONObject?jobj,?String?name)??
-
????????????throws
?JSONException{??
-
????????if
(jobj.has(name)){??
-
????????????return
?jobj.getString(name);??
-
????????}??
-
????????return
?
null
;??
-
????}??
-
??????
-
}??
?
具体实现的子类如下:
?
-
public
?
class
?UserInfoParser?
extends
?JsonParser<UserInfo>?{??
-
??
-
????private
?UserInfoParser()?{??
-
??????????
-
????}??
-
??????
-
????@Override
??
-
????List<UserInfo>?getList