码迷,mamicode.com
首页 > Web开发 > 详细

自定义JSON配置器

时间:2015-12-13 18:45:10      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

比如要写个专门处理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); 

 

自定义JSON配置器

标签:

原文地址:http://www.cnblogs.com/longshiyVip/p/5043176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!