liaoyun2016-12-25
在java的使用过程中,有时候我们会遇到这样一个问题——将一个对象序列化,保存起来,在以后的某个时候,又需要将保存的数据进行反序列化,以便在代码中使用。
google开发的一个小工具——Gson, 可以方便的帮我们完成这个工作。具体的使用方式如下:
一:将 序列化后的字符串 转 成 map 对象
public static Map<String,String>jsonStringToMap(String jsonString) throws Exception{
if(jsonString!= null){
Gsongson = new Gson();
Map<String,String>map = gson.fromJson(jsonString, new TypeToken<Map<String,String>>(){}.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 <T> TjsonStrToObject(String jsonStr, Class<T> clazz){
try{
JsonElementje = new JsonParser().parse(jsonStr);
Tt = new Gson().fromJson(je, clazz);
returnt;
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
四、list 序列化后的字符串转为 list 对象集合
public static <T> List<T>listStringToOjectList(Class<T> type,String listString){
List<T>list = new ArrayList<T>();
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;
}
联系客服