前言:  
 数据库的字段比如:price:1 ,返回需要price:1元。
 这时两种途径修改:
  ① 比如sql中修改或者是在实体类转json前遍历修改。  
  ②返回json,序列化时候修改。用到的是fastjson。要求fastjson版本1.2.15以上(本章介绍)
    
操作:

 首先pom修改依赖
    <dependency>  
       <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.2.29</version>
    </dependency>    
 这里我要返回的图片路径 在返回时候字段前面拼接一个 /files 
 @JSONField(serializeUsing = JSONFieldViewPathSerializerUtil.class)
 private String idcardImages;
  
 JSONFieldViewPathSerializerUtil  是此字段序列化要用的类
public class JSONFieldViewPathSerializerUtil implements ObjectSerializer {

    static StorageProperties storageProperties;

    @Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) {
    // 这里从spring中获取bean 为了取 "/files" ,可以忽略不看
if (null == storageProperties) {
storageProperties = SpringUtil.getBean(StorageProperties.class);
}
    //主要看这里  
if (StringUtils.isNotBlank(object.toString())) {
String value = object.toString();
        //拼接 "/files"
value = storageProperties.getRequestLocation() + value;
serializer.write(newValue);
} else {
serializer.write(String.valueOf(object));
}
}
}

  注意事项:

    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; @Component
public class SpringUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if(SpringUtil.applicationContext == null) {
SpringUtil.applicationContext = applicationContext;
}
System.out.println("========ApplicationContext配置成功,在普通类可以通过调用SpringUtils.getAppContext()获取applicationContext对象,applicationContext="+SpringUtil.applicationContext+"========");
} //获取applicationContext
public 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返回指定的Bean
public static <T> T getBean(String name,Class<T> clazz){
return getApplicationContext().getBean(name, clazz);
} }

最新文章

  1. RQNOJ 490 环形石子合并
  2. treeview 控件使用和数据绑定
  3. JavaWeb 自定义404页面
  4. linux文件目录权限详解(20170101)
  5. js对象的创建与原型总结
  6. ORA-01720: grant option does not exist for &#39;xxx.xxxx&#39; (ORA-01720 ‘XXX’ 不存在授权选项)
  7. Leetcode027. Remove Element
  8. kettle的hello world
  9. PowerDesigner15.1创建模型及生成带注释sql操作手册
  10. hdu 1222 Wolf and Rabbit
  11. 【转】spin_lock &amp; mutex_lock的区别? .
  12. 免费的编程中文书籍索引 from github
  13. 开始MVC5之旅
  14. Sencha Cmd的简介
  15. TreeSet小练习
  16. Linux下双网卡Firewalld的配置流程
  17. ANDROID 中设计模式的采用--创建型模式
  18. 漫谈php框架之中间件
  19. 【Windows】创建任务计划
  20. 螺旋折线(可能是最简单的找规律)【蓝桥杯2018 C/C++ B组】

热门文章

  1. window下安装itchat库
  2. Monad Explained in One Picture
  3. spring 读取yaml配置文件
  4. Microsoft Azure IoTHub Serials 2 - 如何为android应用添加IoTHub支持
  5. Javascript高级编程学习笔记(73)—— 表单(1)表单基础
  6. 每天学点SpringCloud(五):如何使用高可用的Eureka
  7. Python面向对象4:类的相关函数与属性
  8. Eclipse 配置 Tomcat 服务器
  9. hbase概念解析
  10. Redis Linux 安装运行实战全记录