从web API返回的JSON可以是两倍或更长,在Java中如何最有效地处理这个问题?

从web API返回的JSON可以是两倍或更长,在Java中如何最有效地处理这个问题?,java,json,double,long-integer,type-conversion,Java,Json,Double,Long Integer,Type Conversion,我正在用java编写一些代码,并使用JSON简单包。我在下面运行这个代码 jsonObject.get( "last" ) ; 不幸的是,这可能是长的,也可能是双精度的,解析这个值的最快/最正确的方法是什么 是不是像下面这样 long lngLast = -1; double dblLast = -1; if ( jsonObject.get( "last" ).getClass().getName() == "java.lang.Long" ) { lngLast = (long

我正在用java编写一些代码,并使用JSON简单包。我在下面运行这个代码

jsonObject.get( "last" ) ;
不幸的是,这可能是长的,也可能是双精度的,解析这个值的最快/最正确的方法是什么

是不是像下面这样

long lngLast = -1;
double dblLast = -1;

if ( jsonObject.get( "last" ).getClass().getName() == "java.lang.Long" ) {
    lngLast =  (long) jsonObject.get( "last" ) ;
} else {
    dblLast = (double) jsonObject.get("last");
}

if ( lngLast == -1)
    System.out.println( dblLast );
else
    System.out.println( lngLast );
这似乎很荒谬。一定有更好的办法。我曾尝试将long转换为double(我相信我能做到),但每次都会出错。我希望有人能教我如何正确或更好地执行此操作。

事实上,在处理的所有JSON消息中,“last”元素应该具有一致的数据类型。如果没有合适的规范,也不想进行测试,您可能希望在
长的
上使用
double

在这种情况下,类型可以是,我认为测试对象类型是一种非常好的方法

作为补充说明,您的if测试应该是:

使用
==
进行字符串比较不会像您希望的那样工作。

实际上,“last”元素在您处理的所有JSON消息中都应该具有一致的数据类型。如果没有合适的规范,也不想进行测试,您可能希望在
长的
上使用
double

在这种情况下,类型可以是,我认为测试对象类型是一种非常好的方法

作为补充说明,您的if测试应该是:


使用
==
进行字符串比较不会像您希望的那样工作。

是的,我希望它是一个一致的数据类型,但事实并非如此。JSON解析器似乎决定了它是什么,我试着看看是否可以设置类型或其他什么,但我找不到任何东西。你是说JSON库正在决定它将是哪种类型?你用的是我的吗?如果是这样的话,我会说你应该把它当作一个
double
。如果数字不包含句点
,那么它会将其视为
long
(或
int
)不,它是json简单包()-由于它的简单性,我很久以前就使用过它。我可能不得不尝试更改软件包。如果您打算换一个新的软件包,我对这个库有很好的体验。是的,我希望它是一个一致的数据类型,但事实并非如此。JSON解析器似乎决定了它是什么,我试着看看是否可以设置类型或其他什么,但我找不到任何东西。你是说JSON库正在决定它将是哪种类型?你用的是我的吗?如果是这样的话,我会说你应该把它当作一个
double
。如果数字不包含句点
,那么它会将其视为
long
(或
int
)不,它是json简单包()-由于它的简单性,我很久以前就使用过它。我可能得试着换一个包。如果你要换一个新的,我在图书馆有很好的经验。为什么它可以是一个双人包或一个长的?这就是问题所在。为什么它可以是双倍的还是长的?这就是问题所在。
if (jsonObject.get("last").getClass().equals(Long.class)) {
    ....
}