JSON - 简单得到一个Integer而不是Long

use*_*492 10 java json integer casting long-integer

如何获得Integer而不是Long来自JSON?

我想在我的Java程序中读取JSON,但是当我得到一个JSON值是一个数字时,我的解析器会返回一些类型Long.

我想得到一个Integer.我试图将long转换为整数,但java抛出一个ClassCastException(java.lang.Long不能转换为java.lang.Integer).

我尝试了几件事,比如首先将long转换为字符串,然后转换为Integer.parseInt();但是也不起作用.

我正在使用json-simple

编辑:

我仍然无法使它工作.这是一个例子:jsonItem.get("amount"); //返回一个Object

我可以做这个:

(long)jsonItem.get("amount");
Run Code Online (Sandbox Code Playgroud)

但不是这个:

(int)jsonItem.get("amount");
Run Code Online (Sandbox Code Playgroud)

我也无法转换它

Integer newInt = new Integer(jsonItem.get("amount"));
Run Code Online (Sandbox Code Playgroud)

要么

Integer newInt = new Integer((long)jsonItem.get("amount"));
Run Code Online (Sandbox Code Playgroud)

Hot*_*cks 7

请理解Long并且Integer是对象类,long而且int是原始数据类型.您可以在后者之间自由转换(可能丢失高位),但您必须在前者之间进行实际转换.

Integer newInt = new Integer(oldLong.intValue());
Run Code Online (Sandbox Code Playgroud)

  • `Integer.valueOf(oldLong.intValue())`是首选的,或者是等价的,但不那么明确的`(int)(long)oldLong`. (2认同)