标签:
比如要写个专门处理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);
标签:
原文地址:http://www.cnblogs.com/longshiyVip/p/5043176.html