选择json相关的工具包时,考虑易用性、性能、配置简单等方面,采用了阿里巴巴的 fastjson。
在深入使用的过程中,越来越发现,文档奇缺,只好将找到的资料,在此建立索引,便于日后查询,
本文待整理。。。。
import com.alibaba.fastjson.annotation.JSONField;
public class BaseParam {
@JSONField(name="OTAId")
private String otaId;
@JSONField(name="Status")
private int status; //状态码
@JSONField(name="StatusText")
private String statusText;
@JSONField(serialize=false) //该字段不参与序列化
private String otaPassword;
@JSONField(name="Timestamp", format="yyyy-MM-dd HH:mm:ss")
private Date timestamp; //请求时间
//getter and setter
}
package com.util;
import java.math.BigDecimal;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.alibaba.fastjson.serializer.ValueFilter;
/**
* 处理BigDecimal小数部分为0的情况
* 123.5 -> 123.5
* 12.0 -> 12
*/
public class BigDecimalValueFilter implements ValueFilter {
private static final Logger logger = LogManager.getLogger(BigDecimalValueFilter.class);
/**
* @param object 对象
* @param name 对象的字段的名称
* @param value 对象的字段的值
*/
@Override
public Object process(Object object, String name, Object value) {
if(null != value && value instanceof BigDecimal) {
String str = value.toString();
if(str.endsWith(".0")) {
str = str.substring(0, str.length()-2);
} else if(str.endsWith(".00")) {
str = str.substring(0, str.length()-3);
} else {
str = value.toString();
}
logger.debug(value.toString()+"->"+str);
return str;
}
return value;
}
}
fastjson转换数字,格式化小数点,参考
http://blog.csdn.net/wangjunjun2008/article/details/53010594
fastjson使用过程中的常见问题及答案
https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
fastjson格式化输出,参考
https://github.com/smallnest/fastjson-jaxrs-json-provider/issues/1
fastjson的SerializerFeature属性,参考
http://www.cnblogs.com/Jie-Jack/p/3758046.html
JSONField注解的属性说明
https://github.com/alibaba/fastjson/wiki/JSONField
序列化过滤
https://github.com/alibaba/fastjson/wiki/SerializeFilter
PropertyFilter 接口过滤属性
定制序列化
https://github.com/alibaba/fastjson/wiki/%E5%AE%9A%E5%88%B6%E5%BA%8F%E5%88%97%E5%8C%96