我正在尝试使用JSON-Simple JSON处理器库。
解析JSON片段,例如:
"speed":1.13
…我叫get
并转换为Double
。没问题。
Double speed = ( Double ) wind.get( "speed" );
但是我遇到一个没有小数的值。例如:1
而不是1.0
。
"speed":1
当然,此数据的发布者应写为"speed":1.0
。但是他们没有。
我的get
具有强制转换抛出异常:
[线程“主”中的异常java.lang.ClassCastException:类java.lang.Long无法强制转换为类java.lang.Double(java.lang.Long和java.lang.Double在加载程序的模块java.base中'bootstrap')
显然是JSON-Simple坚持将1
的JSON值解析为Long
。因此,我需要一种解决方法,一种告诉JSON-Simple如何解析此特定元素的方法。
➥是否有一种方法可以告诉JSON-Simple将字符串输入解析为Double
,而不管是否存在decimal separator(小数点)?
➥更好,我可以告诉JSON-Simple将特定JSON元素的字符串输入解析为BigDecimal
来绕过BigDecimal
的inaccuracy吗? (也就是说,从floating-point到String
一直不涉及浮点数)
[您正在使用由方义东领导的原始JSON-Simple库。后来的版本2和3是由Davin Loegering领导在GitHub上的BigDecimal
开发的。
原稿不支持this Clifton Labs page。 BigDecimal
支持The fork。请参阅BigDecimal
方法。
fork大大改变了原始库。请参见getBigDecimal
的历史记录部分。
代替强制尝试
getBigDecimal