自定义JSON配置器
2024-08-24 05:05:21
比如要写个专门处理float类型的方法,然后注册到JSON配置器中,具体如下:
配置器代码如下:
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.Locale; import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor; class FloatJsonValueProcessor implements JsonValueProcessor { public FloatJsonValueProcessor() { } /**
* 处理数组类型
*/
public Object processArrayValue(Object value, JsonConfig jsonConfig) { if (value instanceof float[]) { String[] obj = {}; float[] nums = (float[]) value; for (int i = 0; i < nums.length; i++) {
obj[i] = roundHalfUp(nums[i], 3);
} return obj;
} return value;
} /**
* 处理单个对象
*/
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) { if (value instanceof Float) {
return roundHalfUp((Float)value, 3);
} return value;
} /**
* 四舍五入。
*
* @param number 数值
* @return 舍入后的数值
* @see java.text.RoundingMode.HALF_UP
*/
public String roundHalfUp(double number, int frac) {
NumberFormat fmt = NumberFormat.getInstance(Locale.CHINA); fmt.setMaximumFractionDigits(frac);
fmt.setRoundingMode(RoundingMode.HALF_UP); return fmt.format(number);
}
}
然后在具体代码中注册处理器:
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Float.class, new FloatJsonValueProcessor()); float f = 0.1f;
JSONArray array = JSONArray.fromObject(f,jsonConfig);
最新文章
- php glob()函数实现目录文件遍历与寻找与模式匹配的文件路径
- 基于HT for Web 3D呈现Box2DJS物理引擎
- k序数组排序
- Classloaders and Classes
- MyBatis3.1 学习教程
- [转载]如何重装Grub,使其可以引导双系统
- 小游戏 Lights Out (关灯) 的求解 —— 异或方程组
- mysql 增量导入到elasticsearch
- emoji图像转码解码 存入数据库
- Android ADT安装时卡在Calculating requirements and dependencies
- 【Lab】Python改bat文件
- 图解script的三种加载方式 异步加载顺序
- GDAL create kml
- dubbo 源码学习1 服务发布机制
- [源码]Dephi溢出demo( Shellcode for XP)
- Minor GC vs Major GC vs Full GC
- python测试开发django-5.模板templates
- swift 继承和构造器
- HDU 5963 朋友(树+博弈)
- java 检测代理IP是否准确