×

FastJson

FastJson序列化自定义返回字段,普通类从spring容器中获取bean

我的笔记 我的笔记 发表于2018-11-12 14:56:22 浏览3132 评论0

抢沙发发表评论

    

 
    <dependency>     
       <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.29</version>
    </dependency>

   
 这里我要返回的图片路径 在返回时候字段前面拼接一个 /files 
 @JSONField(serializeUsing = JSONFieldViewPathSerializerUtil.class)
 private String idcardImages;
  
 JSONFieldViewPathSerializerUtil  是此字段序列化要用的类
  JSONFieldViewPathSerializerUtil   write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,  ( === SpringUtil.getBean(StorageProperties.== storageProperties.getRequestLocation() +

  注意事项:

    1、String序列化时候 如果是null 会在返回的时候变成 " "空字符串,判断时候需要注意

    2、在要序列化的字符串是空 " " 也要  执行方法:serializer.write(String.valueOf(object));

       否则返回的json 是“ idcardImages:  ,” 注意格式是错误的




扩展:SpringUtil从容器中获取bean
/**
 * @Auther liran
 * @Date 2018/8/30 14:49
 * @Description */import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;

@Componentpublic class SpringUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;

    @Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {if(SpringUtil.applicationContext == null) {
            SpringUtil.applicationContext = applicationContext;
        }
        System.out.println("========ApplicationContext配置成功,在普通类可以通过调用SpringUtils.getAppContext()获取applicationContext对象,applicationContext="+SpringUtil.applicationContext+"========");
    }//获取applicationContextpublic static ApplicationContext getApplicationContext() {return applicationContext;
    }//通过name获取 Bean.public static Object getBean(String name){return getApplicationContext().getBean(name);
    }//通过class获取Bean.public static <T> T getBean(Class<T> clazz){return getApplicationContext().getBean(clazz);
    }//通过name,以及Clazz返回指定的Beanpublic static <T> T getBean(String name,Class<T> clazz){return getApplicationContext().getBean(name, clazz);
    }

}

 




我的笔记博客版权我的笔记博客版权