【如何从Java中的JSON对象获取浮点值】JSONObject是名称/值对的无序集合。它的外部形式是用大括号括起来的字符串, 名称和值之间带有冒号, 值和名称之间带有逗号。内部形式是一个对象, 该对象具有用于按名称访问值的get和opt方法, 以及用于按名称添加或替换值的put方法。
在Java中, 可以使用import org.json.JSONObject导入此类。 JSONObject类型的对象具有许多有用的方法来检索其任何值, 例如getBoolean, getInt, getString, getDouble或getLong。这些方法返回通过其名称映射的值(如果存在), 并将它们转换为特定类型(根据名称):
JSONObject myObject = new JSONObject("{ \"anyString\":\"Hello World\", \"aNumber\": 123, \"aDouble\": -895.25 }");
myObject.getString("anyString");
// Hello WorldmyObject.getNumber("aNumber");
// 123myObject.getDouble("aDouble");
// -895.25
可怜的是, 对于浮点值(带小数的数字), 没有诸如getFloat这样的方法可以返回所需的类型。如果你擅长数学和编程, 那么你会认为getDouble函数可能会为你提供窍门, 例如12345678987.00, 但是它将提供1.2345678987E10作为结果, 而使用getLong则会删除小数。
从JSON Object元素检索float值为了实现从Float类型的JSON对象获取元素的目标, 可以使用Big Decimal类。 BigDecimal类提供了用于算术, 缩放操作, 舍入, 比较, 哈希和格式转换的操作。 BigDecimal类为用户提供了对舍入行为的完全控制。如果未指定舍入模式并且无法表示确切结果, 则会引发异常;否则, 将抛出异常。否则, 可以通过向运算提供适当的MathContext对象, 以选定的精度和舍入模式进行计算。无论哪种情况, 都提供了八种舍入模式用于控制舍入。
在类的顶部使用以下语句导入BigDecimal类:
import java.math.BigDecimal;
然后, 你要做的就是从JSON对象所需的元素中将double值(返回指数值)作为第一个参数提供给BigDecimal.valueOf方法, 并从返回的值中执行floatValue方法:
JSONObject myObject = new JSONObject("{ \"anyString\":\"Hello World\", \"aNumber\": 123, \"aDouble\": 12345678987.00 }");
float myFloatValue = http://www.srcmini.com/BigDecimal.valueOf(myObject.getDouble("aDouble")).floatValue();
编码愉快!
推荐阅读
- 如何在Android中使用JSCH(SFTP)从服务器删除文件
- 如何从Java运行系统应用程序(可执行文件)
- 如何解决Android Studio错误(无法解决符号”RandomAccessFile”)
- 如何使用Java检索Android设备上的可用RAM
- 如何在Java中打印三角形矩形图案(从左到右和从右到左)
- 如何在Java中轻松使用JSON
- Java技术指南「并发原理专题」AQS的技术体系之CLHMCS锁的原理及实现
- Java技术探索「开发实战专题」Lombok插件开发实践必知必会操作!
- Java ASM系列((056)opcode: method)