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);
        }
  • 相关阅读:
    java虚拟机-内存的分配
    java-类的多态和多重继承
    java 设计模式-策略模式
    java-线程介绍和基本使用
    java 数据流操作
    java basic
    JAVA连载117-反射的应用与打破封装新
    C连载2-编译过程以及语言历史概览
    Android连载12-完善新闻app内容区域
    JavaScript连载11-Switch
  • 原文地址:https://www.cnblogs.com/telwanggs/p/15233470.html
Copyright © 2011-2022 走看看