java数值加法null得到什么,fastjson 处理null值,对象为null时返回{},数字为null返回[]...
针对这一情况。
我用的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返回[]...相关推荐
- Java 值对象探讨与实践
值类型与值对象 我们都知道,Java 语言中的类型分为两种:基本类型(primitive type)和引用类型(reference type),这不仅是语言层面的特性,也由 JVM 内在实现支持[1] ...
- php函数计算加法,JavaScript_javascript实现一个数值加法函数,废话不多说,直接奉上代码
JS - phpStudy...
javascript实现一个数值加法函数 废话不多说,直接奉上代码 JS function Sum(arg1,arg2){ //数值加法函数 var sarg1 = new String(arg1); ...
- SpringBoot中fastJson返回数据展示null字段(响应值为null时字段被过滤)
fastjson将对象转为json字符串给前端的时候, 如果字段的值为null, 则该字段默认被fastJson过滤直接不展示. 而在实际项目中我们往往也是需要展示这个字段的 , 解决即增加一个fas ...
- Java中 byte[]数组序列化和fastjson序列化区别
Java中 byte[]数组序列化和fastjson序列化区别 Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比. 首先看下实现方式: 1 byte数组序列 ...
- Java 数值比较
原文:https://majing.io/posts/10000000061000 Java数值类型分为基本类型,包装类型. 基本类型:byte.short. int.long.float和doubl ...
- java null转空_Java对象为空时,将null转换为 保存值为空的属性
Java对象为空时,不显示该对象属性,或者将null转换为"" 第一种方法: @JsonInclude(JsonInclude.Include.NON_NULL) private ...
- java数值运算divide_Java常用的计算机数字运算函数
java中的数学计算函数 Math类:java.lang.Math类中包含基本的数字操作,如指数.对数.平方根和三角函数.java.math是一个包,提供用于执行任意精度整数(BigInteger)算 ...
- java 数值计算_常用的java数值计算方法
少年易学老难成,一寸光阴不可轻 - 百度文库 1 常用Java 数值计算方法 在Java 系统提供的Math 类中包含了一些数值常量,如E 和PI ,以及一些的数值计算方法,如求指数.求对数.开平方根 ...
- java 二进制加法运算_java实现二进制的加法
先看打印结果在看代码比较好理解.结果在最下面的位置. 总结:讲解了二进制的按位异域.按位与.左移的运算规则.并通过次3种算法得到2个数相加的结果.二进制应该还有其他算法,由于知识浅薄就不知道了. 代码 ...
最新文章
- TikTok时代细分需求 牛逼亚马逊运营团队打造新爆款
- Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No s
- Linux 复习重点目录
- glibc版本查看_Linux开发必知内容整理 | libc、glibc和glib的关系
- Java笔记-SSLSocket双向认证实例
- r730服务器内置SD卡位置,已解决: RE: 关于r730xd做存储服务器的疑问 - Dell Community...
- php 0x颜色 转换,rgb和十六进制颜色互转
- mw150um 驱动程序win10_Intel网卡驱动Win10官方下载_Intel网卡驱动Win10专版64位官方安装版-华军软件园...
- 椭圆拟合fitEllipse()函数
- java外文文库_java外文文献毕业设计
- 【转】数字会议系统功能之解析
- 12级软件测试课程博客汇总
- 自然语言处理从零到入门 自然语言理解NLU
- linux u盘拷贝问题
- 亿愿Word文档批量多语言翻译---word文档翻译专家!几十种语言随意快速互译!可以生成中外文,中英文对照内容文档!
- datasnap出现connection closed gracefully错误的解决办法
- Kafka,amq,RabbitMq
- 《鬼谷子》中的沟通技巧——入门篇
- 如何让两个div并排布局?
- 【MIKE HYDRO】某河道MIKE HYDRO水质水动力模拟项目-水动力模型构建