zoukankan      html  css  js  c++  java
  • 自定义JSON配置器

    比如要写个专门处理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); 
  • 相关阅读:
    “耐撕”团队 2016.3.25 站立会议
    “耐撕”团队 2016.03.24 站立会议
    “耐撕”团队 2016.3.22 站立会议
    windows环境下的git安装及使用
    词频统计(三)
    第二周作业
    Unity之GUI控件
    Lua的协同程序(coroutine)
    Lua与C++的交互
    Lua的元方法__newindex元方法
  • 原文地址:https://www.cnblogs.com/longshiyVip/p/5043176.html
Copyright © 2011-2022 走看看