Gson

添加依赖

<dependency>
     <groupId>com.google.code.gson</groupId>
     <artifactId>gson</artifactId>
     <version> 2.4 </version>
</dependency>

1.将一个对象转成Json

我们可以用Gson对象toJson方法生成

@Test
public  void   Test1(){
     User zhangSan= new  User();
     zhangSan.setAge( 12 );
     zhangSan.setArea( "北京" );
     zhangSan.setSex( 1 );
     zhangSan.setName( "张三" );
     Gson gson = new  Gson();
     System.out.println(gson.toJson(zhangSan));
}

结果:

{
"name": "张三",
"sex": 1,
"area": "北京",
"age": 12
}


2.关键字,如需替换,可以使用注解

@SerializedName("xxxx")字段名称会被替换成注解的名字,一下就解决了需求。


比如,我们现将name:"张三",换成Name:"张三"

可以这样

@SerializedName ( "Name" )
private  String  name;
private  int  sex;
private  String area;
private   int   age;

结果

{
"Name": "张三",
"sex": 1,
"area": "北京",
"age": 12
}

3.GsonBulider 使用

主要功能: 

  • 1.serializeNulls:把json中的””,转换为null;
  • 2. setPrettyPrinting:json无格式字符串转换为带格式的字符串
@Test
public   void  Test2(){
     User zhangSan= new  User();
     zhangSan.setAge( 12 );
     zhangSan.setArea( "北京" );
     zhangSan.setSex( 1 );
     zhangSan.setName( "张三" );
     GsonBuilder gsonBuilder=  new  GsonBuilder();
     gsonBuilder.setPrettyPrinting();
     Gson gson=gsonBuilder.create();
     System.out.println(gson.toJson(zhangSan));
}
  • 结果
  • {
  • "name": "张三",
  • "sex": 1,
  • "area": "北京",
  • "age": 12
  • }
  • 3.  setDateFormat("yyyy-MM-dd HH:mm:ss"):把解析后的是Date类型的字段格式都转换为yyyy-MM-dd HH:mm:ss类型
  • 4. generateNonExecutableJson():生成的json字符串不具备正确格式的json字符串
  • 5.excludeFieldsWithModifiers(Modifier.PRIVATE):Gson在解析时,把类中字段的PRIVATE访问权限排除,就是遇到private修饰的字段时,Gson不做解析;(还可以对有finalstatic等修饰的变量,或者修饰类的abstract,或者类是接口的等等,都可以做出控制解析)

代码

public   void  Test2(){
     User zhangSan= new  User();
     zhangSan.setAge( 12 );
     zhangSan.setArea( "北京" );
     zhangSan.setSex( 1 );
     zhangSan.setName( "张三" );
 
     GsonBuilder gsonBuilder=  new  GsonBuilder();
     gsonBuilder.excludeFieldsWithModifiers(Modifier.PRIVATE);
 
     Gson gson=gsonBuilder.create();
     System.out.println(gson.toJson(zhangSan));
}

  • 结果:{}

  • 6.excludeFieldsWithoutExposeAnnotation():主要是不解析@Expose修饰的字段。
  • 7.   setExclusionStrategies:Gson解析时,可以通过名字排除某些字段,也可以通过类型排除,不做解析;如Gson gson = newGsonBuilder().
  • 8.  setFieldNamingStrategy,自己可以设一些策略
@Test
public  void  Test4() {
 
     User zhangSan =  new  User();
     zhangSan.setAge( 12 );
     zhangSan.setArea( "北京" );
     zhangSan.setSex( 1 );
     zhangSan.setName( "张三" );
 
     GsonBuilder gsonBuilder =  new  GsonBuilder();
     gsonBuilder.setFieldNamingStrategy( new  FieldNamingStrategy() {
         @Override
         public  String translateName(Field field) {
             if (field.getName().equals( "sex" ))
                 return  "SEX" ;
             return  field.getName();
         }
     });
     Gson gson = gsonBuilder.create();
     System.out.println(gson.toJson(zhangSan));
}
  • 结果:{"name":"张三","SEX":1,"area":"北京","age":12}

解析

fromJson(String,class)

第一个参数,我们要解析的json,第二个我们转成的类型

举例

@Test
public  void  Test5(){
     Gson gson=  new  Gson();
     User user=gson.fromJson( "{\"name\":\"张三\",\"sex\":1,\"area\":\"北京\",\"age\":12}" ,User. class );
     System.out.println(user);
}

结果:User{name='张三', sex=1, area='北京', age=12}

原则是:将json的key 和我们属性值一一进行对应,如果没有的话,就默认为null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值