Gson(谷歌开源)


WangXiaoEr wangxaioer = new WangXiaoEr();
  wangxaioer.setName("王小二");
  wangxiaoer.setAge(25.2);
  wangxiaer.setMajor(new String[]{"理发","挖掘机"});


Gson gson = new Gson();
System.out.println(gson.toJson(wangxiaoer));//可以将json对象转为gson对象

   1:假设我想让name在json串中变成大写,在WangXiaoEr这个Model类的name属性上加上@SerializedName("Name");
   
   2:可以使用GsonBuilder执行一些个性化的操作
    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.setPrettyPrinting();
    gsonBuilder.setFieldNamingStrategy(new FieldNamingStratery(){  和1的功能一样
   
    public String translateName(Field f){
    if(f.getName().equals("name")){
    return "NAME";
    }
    return name;
    }
   
   
   
    })
    Gson gson = gsonBuilder.create();
    System.out.println(gson.toJson(wangxaioer));
以前打印出来的是一条字符串aaaaaaaaaaaa,现在打印出来的是层次分明的aa


3:如果有些属性不想暴露给json,就在这个属性上面加上transient这样的关键字就可以了,即private  transient String name;
这个关键字在序列化的时候也能用到,用它修饰的变量不参与序列化的过程

4:解析
File file = new File(类.class.getResource("文件名").getFile());
  String content = FileUtils.readFileToString(file);
  Gson gson = new Gson();
  WangXiaoEr wangxiaoer = gson.from(content,WangXiaoEr.class);反解析json对象,json不能反向解析javabean,但是gson可以
  System.out.println(wangxiaoer);
 
5:日起转换,假设你的javabean里面有个date类型,json是不能解析的,但是gson可以
File file = new File(类.class.getResource("文件名").getFile());
  String content = FileUtils.readFileToString(file);
  Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();日期模板
  System.out.println(wangxiaoer.getBirthday().toLocaleString());
 
  6:可以无缝对接数组和集合
假设major是list的了,即private List<String> major;
System.out.println(wangxiaoer.getMajor());
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐