zoukankan      html  css  js  c++  java
  • Gson序列化时排除字段

    1.正常序列化

    new Gson().toJson(obj)

    2.序列化null

    Gson gson = new GsonBuilder().serializeNulls().create();
    gson.toJson(obj)
    

    3.忽略序列化某字段

    • 排除transient字段
    字段加上transient修饰符
    public transient int x; 
    String json = new Gson().toJson(obj);
    
    • 排除Modifier为指定类型的字段
    Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PROTECTED).create();
    String json = gson.toJson(obj);
    
    • 使用@Expose注解

    没有被@Expose标注的字段会被排除
    Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
    String json = gson.toJson(obj);
    
    • 使用ExclusionStrategy定制字段

      这种方式最灵活,下面的例子把所有划线开头的字段全部都排除掉:
        class MyObj {
            
            public int _x; // <---
            public int y;
            
            public MyObj(int x, int y) {
                this._x = x;
                this.y = y;
            }
            
        }
    
        @Test
        public void gson() {
            ExclusionStrategy myExclusionStrategy = new ExclusionStrategy() {
     
                @Override
                public boolean shouldSkipField(FieldAttributes fa) {
                    return fa.getName().startsWith("_"); // <---
                }
     
                @Override
                public boolean shouldSkipClass(Class<?> clazz) {
                    return false;
                }
                
            };
            
            Gson gson = new GsonBuilder()
                    .setExclusionStrategies(myExclusionStrategy) // <---
                    .create();
            
            MyObj obj = new MyObj(1, 2);
            String json = gson.toJson(obj);
            Assert.assertEquals("{"y":2}", json);
        }
    
  • 相关阅读:
    Vue生命周期
    Vue-Router
    Vue组件
    Vue基础以及指令
    ES6 常用语法
    缓存、序列化、信号
    四、全局事务的commit和rollback
    三、全局事务begin请求GlobalBeginRequest
    二、分布式事务协调者DefaultCoordinator
    一、seata-server的main启动方法
  • 原文地址:https://www.cnblogs.com/format-ch/p/14914029.html
Copyright © 2011-2022 走看看