Gson在java中的使用
liaoyun2016-12-25
在java的使用過程中,有時候我們會遇到這樣一個問題——將一個對象序列化,保存起來,在以后的某個時候,又需要將保存的數據進行反序列化,以便在代碼中使用。
google開發的一個小工具——Gson, 可以方便的幫我們完成這個工作。具體的使用方式如下:
一:將 序列化后的字符串 轉 成 map 對象
public static MapjsonStringToMap(String jsonString) throws Exception{
if(jsonString!= null){
Gsongson = new Gson();
Mapmap = gson.fromJson(jsonString, new TypeToken>(){}.getType());
returnmap;
}else{
returnnull;
}
}
二、將java對象轉換為json字符串
public static String objectToJson(Objectobject){
try{
Gsongson = new Gson();
Stringstr = gson.toJson(object);
returnstr;
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
三、json字符串轉化為 java 對象
public static TjsonStrToObject(String jsonStr, Class clazz){
try{
JsonElementje = new JsonParser().parse(jsonStr);
Tt = new Gson().fromJson(je, clazz);
returnt;
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
四、list 序列化后的字符串轉為 list 對象集合
public static ListlistStringToOjectList(Class type,String listString){
Listlist = new ArrayList();
JsonArrayarray = new JsonParser().parse(listString).getAsJsonArray();
for(JsonElement e : array) {
list.add(newGson().fromJson(e, type));
}
returnlist;
}
五、將InputStream 轉為 字符串
public static StringstreamToJsonString(InputStream is){
if(is== null){
returnnull;
}
ByteArrayOutputStreambaos=null;
try{
intlen=0;
baos= new ByteArrayOutputStream();
byte[]data = new byte[1024];
while((len=is.read(data))!=-1){
baos.write(data,0,len);
}
}catch (IOException e) {
e.printStackTrace();
}
Strings="";
if(baos!=null){
s= new String(baos.toByteArray());
}
returns;
}
六、將InputStream 轉為 字符串
public static StringinputStreamToString(InputStream is){
Scannerscanner = new Scanner(is, "UTF-8");
Strings = scanner.useDelimiter("\\A").next();
returns;
}