使用JSON-Simple(Java)解析JSON数据中的十进制数字,其中有些缺少十进制分隔符

问题描述 投票:1回答:2

我正在尝试使用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来绕过BigDecimalinaccuracy吗? (也就是说,从floating-pointString一直不涉及浮点数)

java json parsing double json-simple
2个回答
1
投票

使用更高版本

[您正在使用由方义东领导的原始JSON-Simple库。后来的版本2和3是由Davin Loegering领导在GitHub上的BigDecimal开发的。

原稿不支持this Clifton Labs pageBigDecimal支持The fork。请参阅BigDecimal方法。

fork大大改变了原始库。请参见getBigDecimal历史记录部分。


2
投票

代替强制尝试

getBigDecimal

© www.soinside.com 2019 - 2024. All rights reserved.