-
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个答案 按时间排序 按投票排序
-
采纳的答案
楼主可以专门写个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
-
因为你用的浮点型,在转换为json的时候会读取一个浮点字,大概在16位。你使用float f = 0.1,试试,不加f后缀、
2011年11月17日 11:31
相关推荐
2. **ezmorph-1.0.6.jar**: `ezmorph` 是一个Java库,用于对象的动态转型,它在`json-lib`中被用到,帮助处理不同类型的数据转换,是`JSONArray.fromObject()`能够正常工作的重要依赖。 3. **commons-collections4-...
关于使用JSONArray.fromObject()方法和引入net.sf.json包所需要的依赖包:commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar
使用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-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
JSONArray jsonArray = JSONArray.fromObject("[\"Apple\", \"Banana\", \"Orange\"]"); System.out.println(jsonArray.getString(1)); // 输出 "Banana" ``` 同样,`JSONObject`提供类似的功能,用于处理JSON对象...
Iterator<Object> iterator = jsonArray.iterator(); while (iterator.hasNext()) { Object element = iterator.next(); System.out.println(element); } ``` 四、序列化与反序列化 JSONArray提供toString()方法...
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...
- 转换为List:`List<Object> list = jsonArray.toList()`,这将把JSONArray转换为一个包含所有元素的List。 - 转换为Java对象集合:如果每个元素对应一个Java类的实例,可以使用`JSONArray.toJavaList(Class)`...
`JSONArray.fromObject()`方法是将Java对象转换为`JSONArray`的便利方法。这个方法非常实用,因为它允许我们直接将`Map`、`List`等Java集合对象转换为JSON格式,而无需手动构建JSON字符串。 #### 1. 解析Map 如果...
JSONObject jsonobj=JSONObject.fromObject(resultData);//将字符串转化成json对象 JSONArray jsonArray = jsonobj.getJSONArray("data");//获取数组 List< PubUnit> pubUnits = new ArrayList(); for (int i = ...
JSONArray jsonArray = JSONArray.fromObject(jsonString, jsonConfig); JSONObject jsonObject; Object pojoValue; List<T> list = new ArrayList(); for (int i = 0; i < jsonArray.size(); i++) { ...
它简化了对象之间的类型转换,特别是在处理JSON数据时,可能需要将JSON对象转换为Java对象,或者反过来。 6. **commons-logging-1.1.1.jar**:Apache Commons Logging是一个日志抽象层,允许开发者在不修改代码的...
接着,通过调用`JSONArray.fromObject(list)`将这个`List`转换为`JSONArray`对象,最终输出转换后的JSON字符串。 ### 总结 本文介绍了如何在Java中实现JSON与List之间的相互转换。通过使用`JSONArray`类提供的方法...
- 将`JSONArray`转换为字符串:`String jsonString = jsonArray.toString();` - 从JSON字符串创建`JSONArray`:`JSONArray jsonArray = new JSONArray(jsonString);` 6. **处理异常**: - 当访问不存在的索引或...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端数据传输,尤其是在Web服务和AJAX交互中。...同时,也要注意处理可能的类型转换异常和其他潜在的问题,确保代码的健壮性。
2. 对于List对象,同样可以使用`JSONArray.fromObject(list)`将其转换为JSONArray。例如: ```java List<String> list = Arrays.asList("first", "second"); JSONArray jsonArray2 = JSONArray.fromObject(list); ...
这个过程首先需要构建JSON数组的字符串,然后使用`JSONArray.fromObject()`解析字符串得到`JSONArray`,最后通过`JSONArray.toList()`将JSON数组转换为Java集合。 4. 对象集合反序列化到JSON数组 同样,也可以将...
jsonArray = JSONArray.fromObject(Arrays.asList("apple", "banana", "orange")); ``` 2. 添加元素:可以使用`add`方法添加JSON元素,包括其他JSONArray、JSONObject、基本类型或其包装类。 ```java jsonArray.add...
JSONArray jsonArray = JSONArray.fromObject( boolArray ); System.out.println( jsonArray ); // prints [true,false,true] } //Collection对象转换成JSON @Test public void testListToJSON(){ ...
标题中的"JSONArray.rar_Free!"表明这是一个关于JSON处理的开源项目,重点关注的是JSONArray类。在Java编程中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输。JSONArray是...