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包

    2. **ezmorph-1.0.6.jar**: `ezmorph` 是一个Java库,用于对象的动态转型,它在`json-lib`中被用到,帮助处理不同类型的数据转换,是`JSONArray.fromObject()`能够正常工作的重要依赖。 3. **commons-collections4-...

    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

    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(net.sf.json.JSONArray)需要的jar包

    JSONArray jsonArray = JSONArray.fromObject("[\"Apple\", \"Banana\", \"Orange\"]"); System.out.println(jsonArray.getString(1)); // 输出 "Banana" ``` 同样,`JSONObject`提供类似的功能,用于处理JSON对象...

    JSONArray.zip_JsonArray

    Iterator&lt;Object&gt; iterator = jsonArray.iterator(); while (iterator.hasNext()) { Object element = iterator.next(); System.out.println(element); } ``` 四、序列化与反序列化 JSONArray提供toString()方法...

    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...

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

    - 转换为List:`List&lt;Object&gt; list = jsonArray.toList()`,这将把JSONArray转换为一个包含所有元素的List。 - 转换为Java对象集合:如果每个元素对应一个Java类的实例,可以使用`JSONArray.toJavaList(Class)`...

    JSONArray解析包

    `JSONArray.fromObject()`方法是将Java对象转换为`JSONArray`的便利方法。这个方法非常实用,因为它允许我们直接将`Map`、`List`等Java集合对象转换为JSON格式,而无需手动构建JSON字符串。 #### 1. 解析Map 如果...

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

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

    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++) { ...

    JSONArray.jar 及其附加 jar

    它简化了对象之间的类型转换,特别是在处理JSON数据时,可能需要将JSON对象转换为Java对象,或者反过来。 6. **commons-logging-1.1.1.jar**:Apache Commons Logging是一个日志抽象层,允许开发者在不修改代码的...

    json之间的转换

    接着,通过调用`JSONArray.fromObject(list)`将这个`List`转换为`JSONArray`对象,最终输出转换后的JSON字符串。 ### 总结 本文介绍了如何在Java中实现JSON与List之间的相互转换。通过使用`JSONArray`类提供的方法...

    JSONArray常用包.rar

    - 将`JSONArray`转换为字符串:`String jsonString = jsonArray.toString();` - 从JSON字符串创建`JSONArray`:`JSONArray jsonArray = new JSONArray(jsonString);` 6. **处理异常**: - 当访问不存在的索引或...

    使用json-lib完成json的序列化和反序列化.pdf

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端数据传输,尤其是在Web服务和AJAX交互中。...同时,也要注意处理可能的类型转换异常和其他潜在的问题,确保代码的健壮性。

    java对象与json对象的转换.docx

    2. 对于List对象,同样可以使用`JSONArray.fromObject(list)`将其转换为JSONArray。例如: ```java List&lt;String&gt; list = Arrays.asList("first", "second"); JSONArray jsonArray2 = JSONArray.fromObject(list); ...

    使用json-lib完成json的序列化和反序列化.docx

    这个过程首先需要构建JSON数组的字符串,然后使用`JSONArray.fromObject()`解析字符串得到`JSONArray`,最后通过`JSONArray.toList()`将JSON数组转换为Java集合。 4. 对象集合反序列化到JSON数组 同样,也可以将...

    net.sf.json jar.zip

    jsonArray = JSONArray.fromObject(Arrays.asList("apple", "banana", "orange")); ``` 2. 添加元素:可以使用`add`方法添加JSON元素,包括其他JSONArray、JSONObject、基本类型或其包装类。 ```java jsonArray.add...

    json-lib完整架包

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

    JSONArray.rar_Free!

    标题中的"JSONArray.rar_Free!"表明这是一个关于JSON处理的开源项目,重点关注的是JSONArray类。在Java编程中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输。JSONArray是...

Global site tag (gtag.js) - Google Analytics