针对这一情况。

我用的json转换工具是fastjson,网上查知fastjson 有ValueFilter接口可以实现自定义过滤

package com.alibaba.fastjson.serializer;

public interface ValueFilter extends SerializeFilter {

Object process(Object object, String name, Object value);

}

知道接口后就简单了。

process(Object object, String name, Object value) //三个参数,object 为要转成json的对象,name是对象的get/is方法的名字(去掉get或is前缀并首字母小写),value就是对应的get值

//思路就是通过object 和 name 反射方法得出 其return的类型。针对value== null 的基础数据类型的或者list的类型的做出不同处理

//实现的部分代码  (PS:时间类型 我也算到基础类型了。)

private static String[] types = {"java.lang.Integer",

"java.lang.Double",

"java.lang.Float",

"java.lang.Long",

"java.lang.Short",

"java.lang.Byte",

"java.lang.Boolean",

"java.lang.Char",

"java.lang.String",

"java.util.Date",

"int","double","long","short","byte","boolean","char","float"};

private static String first2Up(String str){

return str.substring(0,1).toUpperCase()+str.substring(1);

}

private static ValueFilter nullValueFilter = new ValueFilter(){

@Override

public Object process(Object object, String name, Object value) {

if(value==null){

try {

Method method = object.getClass().getDeclaredMethod("get" + first2Up(name));

for(String type : types){

if(method.getReturnType().getName().equals(type)){

return "";

}

}

if (method.getReturnType().isAssignableFrom(List.class) &&

!method.getReturnType().getName().equals("java.lang.Object")) {

return new int[0];

}

return new Object();

} catch (SecurityException | NoSuchMethodException e) {

e.printStackTrace();

return value;

}

}

return value;

}

};

private static String dateFormat = "yyyy-MM-dd HH:mm:ss";

private static SerializeConfig mapping = new SerializeConfig();

static{

mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));

}

//只是部分代码,有些数字类型,也需要加上引号 过滤的对象是notNullValueFilter,原理一样,就不贴出来了,mapping是对日期的格式化方法

public static String toJsonString(Object obj){

SerializeFilter[] filters = {nullValueFilter,notNullValueFilter};

return JSON.toJSONString(obj,mapping, filters);

}

附上原先的json接口转换方法,希望能抛砖引玉

public String object2Json(Object object) throws IOException {

if (!objectUtil.isNotEmpty(object)) {

return "";

}

ObjectMapper mapper = JacksonMapper.getInstance();

// 字段和值都加引号

mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);

//数字加引号

mapper.configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS,true);

mapper.configure(JsonGenerator.Feature.QUOTE_NON_NUMERIC_NUMBERS, true);

mapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer()

{

public void serialize(

Object value,

JsonGenerator jg,

SerializerProvider sp) throws IOException, JsonProcessingException

{

jg.writeString("");

}

});

return mapper.writeValueAsString(object);

}

java数值加法null得到什么,fastjson 处理null值,对象为null时返回{},数字为null返回[]...相关推荐

  1. Java 值对象探讨与实践

    值类型与值对象 我们都知道,Java 语言中的类型分为两种:基本类型(primitive type)和引用类型(reference type),这不仅是语言层面的特性,也由 JVM 内在实现支持[1] ...

  2. php函数计算加法,JavaScript_javascript实现一个数值加法函数,废话不多说,直接奉上代码 JS - phpStudy...

    javascript实现一个数值加法函数 废话不多说,直接奉上代码 JS function Sum(arg1,arg2){ //数值加法函数 var sarg1 = new String(arg1); ...

  3. SpringBoot中fastJson返回数据展示null字段(响应值为null时字段被过滤)

    fastjson将对象转为json字符串给前端的时候, 如果字段的值为null, 则该字段默认被fastJson过滤直接不展示. 而在实际项目中我们往往也是需要展示这个字段的 , 解决即增加一个fas ...

  4. Java中 byte[]数组序列化和fastjson序列化区别

    Java中 byte[]数组序列化和fastjson序列化区别 Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比. 首先看下实现方式: 1 byte数组序列 ...

  5. Java 数值比较

    原文:https://majing.io/posts/10000000061000 Java数值类型分为基本类型,包装类型. 基本类型:byte.short. int.long.float和doubl ...

  6. java null转空_Java对象为空时,将null转换为 保存值为空的属性

    Java对象为空时,不显示该对象属性,或者将null转换为"" 第一种方法: @JsonInclude(JsonInclude.Include.NON_NULL) private ...

  7. java数值运算divide_Java常用的计算机数字运算函数

    java中的数学计算函数 Math类:java.lang.Math类中包含基本的数字操作,如指数.对数.平方根和三角函数.java.math是一个包,提供用于执行任意精度整数(BigInteger)算 ...

  8. java 数值计算_常用的java数值计算方法

    少年易学老难成,一寸光阴不可轻 - 百度文库 1 常用Java 数值计算方法 在Java 系统提供的Math 类中包含了一些数值常量,如E 和PI ,以及一些的数值计算方法,如求指数.求对数.开平方根 ...

  9. java 二进制加法运算_java实现二进制的加法

    先看打印结果在看代码比较好理解.结果在最下面的位置. 总结:讲解了二进制的按位异域.按位与.左移的运算规则.并通过次3种算法得到2个数相加的结果.二进制应该还有其他算法,由于知识浅薄就不知道了. 代码 ...

最新文章

  1. TikTok时代细分需求 牛逼亚马逊运营团队打造新爆款
  2. Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No s
  3. Linux 复习重点目录
  4. glibc版本查看_Linux开发必知内容整理 | libc、glibc和glib的关系
  5. Java笔记-SSLSocket双向认证实例
  6. r730服务器内置SD卡位置,已解决: RE: 关于r730xd做存储服务器的疑问 - Dell Community...
  7. php 0x颜色 转换,rgb和十六进制颜色互转
  8. mw150um 驱动程序win10_Intel网卡驱动Win10官方下载_Intel网卡驱动Win10专版64位官方安装版-华军软件园...
  9. 椭圆拟合fitEllipse()函数
  10. java外文文库_java外文文献毕业设计
  11. 【转】数字会议系统功能之解析
  12. 12级软件测试课程博客汇总
  13. 自然语言处理从零到入门 自然语言理解NLU
  14. linux u盘拷贝问题
  15. 亿愿Word文档批量多语言翻译---word文档翻译专家!几十种语言随意快速互译!可以生成中外文,中英文对照内容文档!
  16. datasnap出现connection closed gracefully错误的解决办法
  17. Kafka,amq,RabbitMq
  18. 《鬼谷子》中的沟通技巧——入门篇
  19. 如何让两个div并排布局?
  20. 【MIKE HYDRO】某河道MIKE HYDRO水质水动力模拟项目-水动力模型构建

热门文章

  1. 浅谈长连接的平滑重启
  2. Spring boot - 整合 Redis缓存(下)
  3. 第二章--电商设计表-商品模块--mysql电商项目设计
  4. Java消息中间件--JMS规范
  5. 如何实现接口的幂等性?
  6. 对已经关闭的的chan进行读写,会怎么样?为什么?
  7. ios端input 光标问题
  8. subversion的windows平台下载地址
  9. NIO的空轮询bug是什么?netty是如何解决NIO空轮询bug的?
  10. android studio butterknife配置,!!!!在AndroidStudio中添加butterknife插件