gson使用
文章分类:Java编程
gson:谷歌提供的JSON的解决方案。它的站点是http://code.google.com/p/google-gson/。本人用过org.json和的JSON-lib中提供的解决方案。先说下org.json,它属于轻量级的JSON的。它能够将Object或者ArrayList的转换为JSONObject的和JsonArrayList。但是在反转换的JSON字符串时却只能够提供字符串的结果。所以比较适合开发者后期处理。至于的JSON-lib的在反转方面做得比前者强了许多。它通过JSONObject.fromObject和JSONObject.toBean可以将Bean、ArrayList、HashMap中与JSONObject的互相转换。但是遇到嵌套问题如一个Bean1->HashMap->Bean2。当它对该对象反转换时将出现Bean2为JSONObject的对象的情况.现在讲到gson了.它通过reflection来识别对象.见下面例子:------------------------華麗的分割線-----------------------------packageorg.gson.bean;importjava.util.Date;importcom.google.gson.annotations.Expose;/普通的UserBean/publicclassUserBean{@ExposeprivateStringid;@ExposeprivateStringname;privateDatebirthday;publicStringgetId(){?returnid;}publicvoidsetId(Stringid){?this.id=id;}publicStringgetName(){?returnname;}publicvoidsetName(Stringname){?this.name=name;}publicDategetBirthday(){?returnbirthday;}publicvoidsetBirthday(Datebirthday){?this.birthday=birthday;}@OverridepublicStringtoString(){?return"UserBean[birthday="+birthday+",id="+id+",name="???+name+"]";}}------------------------華麗的分割線------------------------------packageorg.gson.bean;importjava.util.List;importjava.util.Map;/?包含Arrylist和HashMap,里面保持UserBean?/publicclassGroupBean{privateStringid;privateMapuserMap;privateListuserList;publicStringgetId(){?returnid;}publicvoidsetId(Stringid){?this.id=id;}publicMapgetUserMap(){?returnuserMap;}publicvoidsetUserMap(MapuserMap){?this.userMap=userMap;}publicListgetUserList(){?returnuserList;}publicvoidsetUserList(ListuserList){?this.userList=userList;}@OverridepublicStringtoString(){?return"GroupBean[id="+id+",userList="+userList+",userMap="???+userMap+"]";}}------------------------華麗的分割線------------------------------------------------------華麗的分割線------------------------------packageorg.gson.main;importorg.gson.bean.UserBean;importcom.google.gson.Gson;importcom.google.gson.GsonBuilder;/?通過註釋過濾轉換對象?/publicclassFilterAnnotationTest{publicstaticvoidmain(String[]args){?UserBeanuser=newUserBean();?user.setId("1001");?user.setName("张三");??/???设置注释过滤功能???Gsongson=newGsonBuilder()???.registerTypeAdapter(Id.class,newIdTypeAdapter())???.serializeNulls()???.setDateFormat(DateFormat.LONG)????.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)???.setPrettyPrinting()???.setVersion(1.0)???.create();??/?GsonBuilderbuilder=newGsonBuilder();?//不转换没有@Expose注解的字段?builder.excludeFieldsWithoutExposeAnnotation();?Gsongson=builder.create();?//将JavaBean字符串转换为JSON?StringsUser=gson.toJson(user);?System.out.println(sUser);?//{"id":1001,"name":"张三"}?//将JSON字符串转换为JavaBean?UserBeanuser2=gson.fromJson(sUser,UserBean.class);?System.out.println(user2.getId()+","+user2.getName());?//1001,张三}}------------------------華麗的分割線------------------------------packageorg.gson.main;importjava.lang.reflect.Type;importjava.util.ArrayList;importjava.util.List;importorg.gson.bean.UserBean;importcom.google.gson.Gson;importcom.google.gson.reflect.TypeToken;/模板反射對象Bean@authoryansheng/publicclassTemplateTest{publicstaticvoidmain(String...strings){?ListtestBeanList=newArrayList();?UserBeantestBean=newUserBean();?testBean.setId("1");?testBean.setName("name");?testBeanList.add(testBean);??Gsongson=newGson();?Typetype=newTypeToken>(){}.getType();??StringbeanListToJson=gson.toJson(testBeanList,type);?System.out.println(beanListToJson);?//prints[{"id":"id","name":"name"}]?ListtestBeanListFromJson=gson.fromJson(beanListToJson,type);?System.out.println(testBeanListFromJson);?//prints[TestBean@1ea5671[id=id,name=name,birthday=]]}}------------------------華麗的分割線------------------------------packageorg.gson.main;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importcom.google.gson.Gson;importcom.google.gson.reflect.TypeToken;/簡單的集合使用@authoryansheng/publicclassSimpleCollectionTest{publicstaticvoidmain(String[]args){?Gsongson=newGson();?//将ArrayList字符串转换为JSON?ListtestList=newArrayList();?testList.add("first");?testList.add("second");??StringlistToJson=gson.toJson(testList);?System.out.println(listToJson);?//prints["first","second"]??//将JSON字符串转换为ArrayList?ListtestList2=(List)gson.fromJson(listToJson,???newTypeToken>(){???}.getType());?System.out.println(testList2);??//将HashMap字符串转换为JSON?MaptestMap=newHashMap();?testMap.put("id","id.first");?testMap.put("name","name.second");??StringmapToJson=gson.toJson(testMap);?System.out.println(mapToJson);?//prints{"id":"id.first","name":"name.second"}??//将JSON字符串转换为HashMap?MapuserMap2=(Map)gson.fromJson(mapToJson,???newTypeToken |
|