Java 将json十进制数转换为带十六进制值的缩写

Java 将json十进制数转换为带十六进制值的缩写,java,android,json,Java,Android,Json,我有一个JSONObject,它包含一个带十进制值的字符串,如下所示: private static RegisterIn ParseRegisterIn(JSONObject object) { RegisterIn toReturn = new RegisterIn(); try { toReturn.setUsername(object.getString("username")); toReturn.setCertificate(new S

我有一个
JSONObject
,它包含一个带十进制值的字符串,如下所示:

private static RegisterIn ParseRegisterIn(JSONObject object)
{
    RegisterIn toReturn = new RegisterIn();
    try {
        toReturn.setUsername(object.getString("username"));
        toReturn.setCertificate(new Short(Integer.toHexString(object.get("certificate"))));
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return toReturn;
}
证书
对象值为15879,对应于十六进制的3E07。我想从JSONObject中恢复它,并将其保存在
short
属性中。必须是这样

我已尝试访问参数并按上面所述恢复它,但出现以下异常:

java.lang.NumberFormatException:无效的int:“3e07”

如何获取该十进制值,将其转换为十六进制,并将其保存为短值

注意:

toReturn.setCertificate(...)
short
类型。

您需要使用

Short.parseShort(object.getString("certificate"), 16);

使用
Short.parseShort(object.getString(“证书”),16)

您是否尝试了
Short.parseShort(object.get(“证书”))
?否没有。。。我要尝试…它说它必须转换为字符串…你也可以尝试:
object.getInt(“certificate”)
@Sonhja如果它说必须转换为字符串,你可以使用
Short.parseShort(object.get(“certificate”).toString())
它说它必须转换为字符串,但如果我转换它,它就会失败。如果我不这样做,它就不会编译。我编辑了你的答案,让它工作。您必须自己编写
getString
,而不是
get
。但是现在我得到了以下错误:java.lang.NumberFormatException:缩写值超出范围:“15879”我可以恢复
15879
值,但是当转换为short时,它会说它太长。我应该先把它转换成十六进制…最短的最大值是
32767
。您可以更改
setCertificate
返回方法吗?