博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FastJson序列化Json自定义返回字段,普通类从spring容器中获取bean
阅读量:6324 次
发布时间:2019-06-22

本文共 2910 字,大约阅读时间需要 9 分钟。

前言:    数据库的字段比如:price:1 ,返回需要price:1元。  这时两种途径修改:   ① 比如sql中修改或者是在实体类转json前遍历修改。     ②返回json,序列化时候修改。用到的是fastjson。要求fastjson版本1.2.15以上(本章介绍)      操作:  首先pom修改依赖     
         
com.alibaba
    
fastjson
     
1.2.29
    
     这里我要返回的图片路径 在返回时候字段前面拼接一个 /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;@Componentpublic 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 getBean(Class
clazz){ return getApplicationContext().getBean(clazz); } //通过name,以及Clazz返回指定的Bean public static
T getBean(String name,Class
clazz){ return getApplicationContext().getBean(name, clazz); }}

 

 

转载于:https://www.cnblogs.com/liran123/p/9945385.html

你可能感兴趣的文章
zabbix简单检测
查看>>
other模块的网络请求业务封装工具类
查看>>
Windows进程崩溃问题定位方法
查看>>
程序员如何让自己 Be Cloud Native - 配置篇
查看>>
SQL Server各个版本之间的差异
查看>>
如何拆笔记本键盘(组图)
查看>>
lua install
查看>>
海量数据处理 算法总结
查看>>
DNS服务器之主从服务搭建
查看>>
vim编辑器常用操作整理
查看>>
mysql性能参数查询
查看>>
VirtualBox运行报错Unable to load R3 module
查看>>
EBS Form个性化的工作原理
查看>>
SpringSecurity3整合CAS实现单点登录
查看>>
更新日期 2015年8月5日 - Citrix桌面虚拟化平台交付推荐版本及相关hotfix
查看>>
人工智能教程014:创建卷积神经网络进阶(5)
查看>>
oracle 分析函数
查看>>
idea 项目多开变通的解决方案
查看>>
游戏中发送道具奖励的概率算法
查看>>
Speed Tree
查看>>