0 0

JSONArray.fromObject转换float类型的问题10

我用JSONArray.fromObject转换一个float类型时,比如定义一个float f = 0.1f
JSONArray array = JSONArray.fromObject(f)
array.toString后打印出来的是[0.10000000149011612]
怎么回事,怎样解决?
等!
2011年11月17日 11:02

3个答案 按时间排序 按投票排序

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); 

2011年11月17日 12:47
0 0

因为你用的浮点型,在转换为json的时候会读取一个浮点字,大概在16位。你使用float f = 0.1,试试,不加f后缀、

2011年11月17日 11:31
0 0

浮点数应该这种情况也正常,你可以自己写String类型就行了。需要转float再转。

2011年11月17日 11:22

相关推荐

    使用JSONArray.fromObject所需要的jar包

    使用JSONArray.fromObject所需要的jar包,不使用的话会导致JSONArray.fromObject方法报错

    JSONArray.fromObject()方法和引入net.sf.json所需的依赖包

    关于使用JSONArray.fromObject()方法和引入net.sf.json包所需要的依赖包:commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar

    netsfjson包,用于JSONArray.fromObject

    使用jsonArray.fromObject转json必须导入五个jar, 包含:commons-lang.jar  commons-beanutils.jar  commons-collections.jar  commons-logging.jar  ezmorph.jar  json-lib-2.2.2-jdk15.jar

    json.jar包

    JSONArray jsonArray2 =JSONArray.fromObject( list ); 2. Map集合转换成json代码 Map map = newHashMap(); map.put("name","json"); map.put("bool",Boolean.TRUE); map.put("int", newInteger(1)); map.put...

    JSONArray解析包

    JSONArray解析包,JSONArray.fromObject使用,可以解析map,list等

    JsonArray 相关依赖 jar

    包含 json-lib-2.4-jdk15.jar , ezmorph-1.0.6.jar commons-logging-1.2.jar commons-lang-2.5.jar commons-collections-3.2.jar commons-beanutils-1.8.0.jar

    json-lib完整架包

    JSONArray jsonArray = JSONArray.fromObject( boolArray ); System.out.println( jsonArray ); // prints [true,false,true] } //Collection对象转换成JSON @Test public void testListToJSON(){ ...

    java jsonto对象互转

    JSONArray jsonArray = JSONArray.fromObject(jsonString, jsonConfig); JSONObject jsonObject; Object pojoValue; List&lt;T&gt; list = new ArrayList(); for (int i = 0; i &lt; jsonArray.size(); i++) { ...

    JAVA访问网址获取JSON数据需要的架包

    JSONObject jsonobj=JSONObject.fromObject(resultData);//将字符串转化成json对象 JSONArray jsonArray = jsonobj.getJSONArray("data");//获取数组 List&lt; PubUnit&gt; pubUnits = new ArrayList(); for (int i = ...

    com.alibaba.fastjson.JSONArray依赖jar.rar

    fastjson-1.2.28 ,

    JSONObject与JSONArray使用中所需要的完全jar包整理

    JSONObject与JSONArray使用中所需要的完全jar包整理、需要依赖的包:commons-lang.jar commons-beanutils.jar commons-collections.jar commons-logging.jar ezmorph.jar json-lib-2.2.2-jdk15.jar...

    Java 开发所需json的jar包,转json格式

    JSONArray jsonArray = JSONArray.fromObject(obj); json = jsonArray.toString(); } else { JSONObject jsonObject = JSONObject.fromObject(obj); json = jsonObject.toString(); } System.out.println...

    JSONArray.zip_JsonArray

    JSONArray的使用 附带程序注释与输出

    java解析json

    JSONArray array = JSONArray.fromObject(jsonString); arrObj = new Object[array.size()]; for (int i = 0; i &lt; array.size(); i++) { JSONObject jsonObject = array.getJSONObject(i); arrObj...

    json-lib-2.2.2-jdk15、ezmorph-1.0.6

    java处理json字符串所使用的jar...JSONArray ja=JSONArray.fromObject(joa.get("a")); for(int i=0;i&lt;ja.size();i++){ JSONObject o=ja.getJSONObject(i); if(o.get("b1")!=null){ System.out.println(o.get("b1")); }

    JSONArray.jar 及其附加 jar

    JSONArray 给想要的人 总共六个jar,目前还可以使用,目前还可以使用,目前还可以使用,目前还可以使用

    json-lib-2.3.jar

    解决JsonObject.fromObject方法,和转换List,String&gt;&gt; 型数据的JsonArray.fromObject()方法

    JOSN全部依赖包 包含JSON 格式数据必需7个包

    JSONArray jsonArray = JSONArray.fromObject(boolArray); System.out.println(jsonArray); // prints [true,false,true] } public void list2json() { List list = new ArrayList(); list.add(...

    java对象转json所需要的包

    java对象转json所需要的包 解决JSONObject.fromObject()和JSONArray.fromObject()报 java.lang.NoClassDefFoundError的问题。 导入jar包后请 import net.sf.json.JSONArray; import net.sf.json.JSONObject;

    JSONHelper 工具类

    jsonhelper 工具类 // 将数组转换成JSON public static String array2json(Object object) { JSONArray jsonArray = JSONArray.fromObject(object); return jsonArray.toString(); }

Global site tag (gtag.js) - Google Analytics