Gson解析Map格式json数据
来源:互联网 发布:mac cd 到u盘 编辑:程序博客网 时间:2024/06/10 19:04
有时候我们不需要把实体的所有属性都导出,只想把一部分属性导出为Json.
有时候我们的实体类会随着版本的升级而修改.
有时候我们想对输出的json默认排好格式
这时就可以使用GsonBuilder创建Gson,并且配置一些选项。
Gson gson = new GsonBuilder() .excludeFieldsWithoutExposeAnnotation() //不导出实体中没有用@Expose注解的属性 .enableComplexMapKeySerialization() //支持Map的key为复杂对象的形式 .serializeNulls().setDateFormat("yyyy-MM-dd HH:mm:ss:SSS")//时间转化为特定格式 .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)//会把字段首字母大写,注:对于实体上使用了@SerializedName注解的不会生效. .setPrettyPrinting() //对json结果格式化. .setVersion(1.0) //有的字段不是一开始就有的,会随着版本的升级添加进来,那么在进行序列化和返序列化的时候就会根据版本号来选择是否要序列化. //@Since(版本号)能完美地实现这个功能.还的字段可能,随着版本的升级而删除,那么 //@Until(版本号)也能实现这个功能,GsonBuilder.setVersion(double)方法需要调用. .create();
gson解析各种map格式的json数据
Gson gson = new GsonBuilder() .enableComplexMapKeySerialization() .setPrettyPrinting() .create(); HashMap<String, String> map =new HashMap<String, String>();map.put("1", "数学"); map.put("2", "语文"); map.put("3", "英语"); map.put("4", "物理"); String mapString =gson.toJson(map);HashMap<String, String> map2 = gson.fromJson(mapString, new TypeToken<HashMap<String, String>>(){}.getType());Log.e("GsonActivity", map2.toString()); HashMap<String, Student> map3 =new HashMap<String, Student>();Student student1 =new Student(1, "李三", 20);Student student2 =new Student(2, "李四", 30);Student student3 =new Student(3, "王泽瑞", 40);map3.put("1",student1);map3.put("2",student2);map3.put("3",student3);String map3String =gson.toJson(map3);HashMap<String, Student> map4 = gson.fromJson(map3String, new TypeToken<HashMap<String, Student>>(){}.getType());Log.e("GsonActivity", map4.toString()); HashMap<String,List<Student>> mapList = new HashMap<String,List<Student>>(); List<Student> students =new ArrayList<Student>();students.add(student1);students.add(student2);students.add(student3);mapList.put("test1", students);String mapListString = gson.toJson(mapList);HashMap<String,List<Student>> map5 = gson.fromJson(mapListString, new TypeToken<HashMap<String,List<Student>>>(){}.getType());Log.e("GsonActivity", map5.toString());
输出结果:
{4=物理, 1=数学, 2=语文, 3=英语}{1=[id = 1,nickName=李三,age=20], 2=[id = 2,nickName=李四,age=30], 3=[id = 3,nickName=王泽瑞,age=40]}{test1=[[id = 1,nickName=李三,age=20], [id = 2,nickName=李四,age=30], [id = 3,nickName=王泽瑞,age=40]]}
温馨提示:Gson在序列化Map时,默认情况下,是调用Key的toString方法得到它的JSON字符串的Key,对于简单类型和字符串类型,这没有问题,但是对于复杂数据对象,如果对象没有覆写toString方法,那么默认的toString方法将得到这个对象的Hash地址,通过调用GsonBuilder的enableComplexMapKeySerialization()来启用对Map键(key)的序列化.
解析Date类型的数据格式
Gson gson = new GsonBuilder() .setPrettyPrinting() .setDateFormat("yyyy-MM-dd HH:mm:ss") .create(); Student student =new Student(1, "李三", 20); student.birthDay = new Date(); String jsonString =gson.toJson(student); Log.e("GsonActivity", jsonString); Student student2 = gson.fromJson(jsonString, Student.class); Log.e("GsonActivity", student2.toString() + ", date = " + student2.birthDay); </span>
输出结果:
{ "age": 20, "birthDay": "2016-07-27 13:38:02", "id": 1, "nickName": "李三" } [id = 1,nickName=李三,age=20], date = Wed Jul 27 13:38:02 GMT+08:00 2016
解析数组格式的json数据
<span style="color:#000000;">Gson gson =new Gson();Student student1 =new Student(1, "李三", 20);Student student2 =new Student(2, "李四", 30);Student[] students =new Student[]{student1,student2};String jsonString =gson.toJson(students);Log.e("GsonActivity", jsonString); Student[] arrayStudents =gson.fromJson(jsonString, Student[].class); for(Student student :arrayStudents) { Log.e("GsonActivity", student.toString()); } </span>
输出结果:
<span style="color:#000000;"> [{"age":20,"id":1,"nickName":"李三"},{"age":30,"id":2,"nickName":"李四"}][id = 1,nickName=李三,age=20] [id = 2,nickName=李四,age=30]</span>
0 0
- Gson解析Map格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析(List和Map)格式json数据
- Gson解析JSON格式数据
- GSON解析Json格式数据
- Gson解析嵌套JSON格式数据
- 用GSON解析Json格式数据
- 用GSON解析Json格式数据
- Android连接服务器数据库查询+Gson解析(List和Map)格式json数据(一)
- Android连接服务器数据库查询+Gson解析(List和Map)格式json数据(二)
- Gson解析Json数据
- Gson解析Json数据
- Gson解析Json数据
- Linux常用命令全解
- Spring Boot:在Spring Boot中使用定时任务
- vim中:wq和:x的区别
- 【HDU】5256 - 序列变换(LIS)
- Java文件读写操作
- Gson解析Map格式json数据
- hdu 5762 Teacher Bo(vector的使用1)
- MVC _ViewStart.cshtml文件
- Mysql学习总结(29)——MySQL中CHAR和VARCHAR
- 在gitlab 下跟新代码的命令
- 81.You are managing an Oracle Database 11g database with this backup strategy: - Every Sunday night,
- ubuntu下安装mysql
- js实现继承
- php实现查询数据库返回json数据