从Web API返回的JSON可以是double还是long,我如何在Java中最有效地处理它?

Dav*_*vid 0 java double json type-conversion long-integer

我正在用java编写一些代码并使用JSON Simple包.我在下面运行此代码

jsonObject.get( "last" ) ;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这可能是长的还是双倍的,解析这个值的最快/最正确的方法是什么?

会是这样的吗?

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 );
Run Code Online (Sandbox Code Playgroud)

这似乎很荒谬.必须有更好的方法来做到这一点.我试图将长度转换为双倍(我相信我应该能够做到这一点?)但每次都会出错.我希望有人可以用正确或更好的方式教育我.

jak*_*son 5

实际上,"last"元素应该在您正在处理的所有JSON消息中具有一致的数据类型.如果没有适当的规范而又不想进行测试,你可能想要double超过一个long.

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

作为旁注,你的if测试应该是:

if (jsonObject.get("last").getClass().equals(Long.class)) {
    ....
}
Run Code Online (Sandbox Code Playgroud)

使用==for String比较将无法正常工作.